ketcher-react 3.12.0-dev.1 → 3.12.0-rc.1
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/dist/cjs/index.css +1 -1
- package/dist/cjs/index.css.map +1 -1
- package/dist/cjs/index.js +1212 -515
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/{index.modern-b232add2.js → index.modern-4b58287a.js} +3 -3
- package/dist/cjs/index.modern-4b58287a.js.map +1 -0
- package/dist/cjs/script/editor/Editor.d.ts +18 -1
- package/dist/cjs/script/editor/tool/sgroup.d.ts +17 -0
- package/dist/cjs/script/editor/utils/customOnChangeHandler.test.d.ts +16 -0
- package/dist/cjs/script/ui/data/schema/sdata-schema.d.ts +1 -1
- package/dist/cjs/script/ui/state/functionalGroups/index.d.ts +1 -1
- package/dist/cjs/script/ui/state/notifications/index.d.ts +17 -0
- package/dist/cjs/script/ui/state/saltsAndSolvents/index.d.ts +1 -1
- package/dist/cjs/script/ui/views/components/ContextMenu/hooks/useMarkAs.d.ts +9 -0
- package/dist/cjs/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.constants.d.ts +2 -0
- package/dist/cjs/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.types.d.ts +6 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.js +1214 -517
- package/dist/index.js.map +1 -1
- package/dist/{index.modern-06d576e1.js → index.modern-521d26f9.js} +3 -3
- package/dist/index.modern-521d26f9.js.map +1 -0
- package/dist/script/editor/Editor.d.ts +18 -1
- package/dist/script/editor/tool/sgroup.d.ts +17 -0
- package/dist/script/editor/utils/customOnChangeHandler.test.d.ts +16 -0
- package/dist/script/ui/data/schema/sdata-schema.d.ts +1 -1
- package/dist/script/ui/state/functionalGroups/index.d.ts +1 -1
- package/dist/script/ui/state/notifications/index.d.ts +17 -0
- package/dist/script/ui/state/saltsAndSolvents/index.d.ts +1 -1
- package/dist/script/ui/views/components/ContextMenu/hooks/useMarkAs.d.ts +9 -0
- package/dist/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.constants.d.ts +2 -0
- package/dist/script/ui/views/components/MonomerCreationWizard/MonomerCreationWizard.types.d.ts +6 -1
- package/package.json +1 -1
- package/dist/cjs/index.modern-b232add2.js.map +0 -1
- package/dist/index.modern-06d576e1.js.map +0 -1
package/dist/cjs/index.js
CHANGED
|
@@ -737,8 +737,8 @@ function exec(action) {
|
|
|
737
737
|
return enabled;
|
|
738
738
|
}
|
|
739
739
|
|
|
740
|
-
function ownKeys$
|
|
741
|
-
function _objectSpread$
|
|
740
|
+
function ownKeys$1G(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
741
|
+
function _objectSpread$1G(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1G(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1G(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
742
742
|
var MeasurementUnits;
|
|
743
743
|
(function (MeasurementUnits) {
|
|
744
744
|
MeasurementUnits["Px"] = "px";
|
|
@@ -1080,7 +1080,7 @@ var optionsSchema = {
|
|
|
1080
1080
|
title: 'Settings',
|
|
1081
1081
|
type: 'object',
|
|
1082
1082
|
required: [],
|
|
1083
|
-
properties: _objectSpread$
|
|
1083
|
+
properties: _objectSpread$1G(_objectSpread$1G(_objectSpread$1G(_objectSpread$1G(_objectSpread$1G({}, editor), render), server), debug), miew)
|
|
1084
1084
|
};
|
|
1085
1085
|
function getDefaultOptions() {
|
|
1086
1086
|
if (!optionsSchema.properties) return {};
|
|
@@ -1263,8 +1263,8 @@ function prefetchRender(tmpls, baseUrl, cacheEl) {
|
|
|
1263
1263
|
});
|
|
1264
1264
|
}
|
|
1265
1265
|
|
|
1266
|
-
function ownKeys$
|
|
1267
|
-
function _objectSpread$
|
|
1266
|
+
function ownKeys$1F(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1267
|
+
function _objectSpread$1F(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1F(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1F(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1268
1268
|
var initOptionsState = {
|
|
1269
1269
|
app: {
|
|
1270
1270
|
server: false,
|
|
@@ -1294,7 +1294,7 @@ var initOptionsState = {
|
|
|
1294
1294
|
getServerSettings: function getServerSettings() {
|
|
1295
1295
|
var seriliazedServerOptions = getSerilizedServerOptions(this.settings);
|
|
1296
1296
|
var defaultServerOptions = fp.pick(SERVER_OPTIONS, this.settings);
|
|
1297
|
-
return _objectSpread$
|
|
1297
|
+
return _objectSpread$1F(_objectSpread$1F({}, defaultServerOptions), seriliazedServerOptions);
|
|
1298
1298
|
}
|
|
1299
1299
|
};
|
|
1300
1300
|
function getSerilizedServerOptions(options) {
|
|
@@ -1327,7 +1327,7 @@ function getSerilizedServerOptions(options) {
|
|
|
1327
1327
|
'render-stereo-style': renderStereoStyle
|
|
1328
1328
|
};
|
|
1329
1329
|
if (options.imageResolution === '600') {
|
|
1330
|
-
newOptions = _objectSpread$
|
|
1330
|
+
newOptions = _objectSpread$1F(_objectSpread$1F({}, newOptions), {}, {
|
|
1331
1331
|
'render-output-sheet-width': 11,
|
|
1332
1332
|
'render-output-sheet-height': 8.5
|
|
1333
1333
|
});
|
|
@@ -1405,29 +1405,29 @@ function optionsReducer() {
|
|
|
1405
1405
|
var action = arguments.length > 1 ? arguments[1] : undefined;
|
|
1406
1406
|
var type = action.type,
|
|
1407
1407
|
data = action.data;
|
|
1408
|
-
if (type === 'APP_OPTIONS') return _objectSpread$
|
|
1409
|
-
app: _objectSpread$
|
|
1408
|
+
if (type === 'APP_OPTIONS') return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
|
|
1409
|
+
app: _objectSpread$1F(_objectSpread$1F({}, state.app), data)
|
|
1410
1410
|
});
|
|
1411
1411
|
if (type === 'SAVE_SETTINGS') {
|
|
1412
|
-
return _objectSpread$
|
|
1413
|
-
settings: _objectSpread$
|
|
1412
|
+
return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
|
|
1413
|
+
settings: _objectSpread$1F(_objectSpread$1F({}, state.settings), data)
|
|
1414
1414
|
});
|
|
1415
1415
|
}
|
|
1416
|
-
if (type === 'SAVE_CHECK_OPTS') return _objectSpread$
|
|
1416
|
+
if (type === 'SAVE_CHECK_OPTS') return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
|
|
1417
1417
|
check: data
|
|
1418
1418
|
});
|
|
1419
|
-
if (type === 'CHANGE_ANALYSE') return _objectSpread$
|
|
1420
|
-
analyse: _objectSpread$
|
|
1419
|
+
if (type === 'CHANGE_ANALYSE') return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
|
|
1420
|
+
analyse: _objectSpread$1F(_objectSpread$1F(_objectSpread$1F({}, state.analyse), data), {}, {
|
|
1421
1421
|
loading: false
|
|
1422
1422
|
})
|
|
1423
1423
|
});
|
|
1424
|
-
if (type === 'ANALYSE_LOADING') return _objectSpread$
|
|
1425
|
-
analyse: _objectSpread$
|
|
1424
|
+
if (type === 'ANALYSE_LOADING') return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
|
|
1425
|
+
analyse: _objectSpread$1F(_objectSpread$1F({}, state.analyse), {}, {
|
|
1426
1426
|
loading: true
|
|
1427
1427
|
})
|
|
1428
1428
|
});
|
|
1429
|
-
if (recognizeActions.includes(type)) return _objectSpread$
|
|
1430
|
-
recognize: _objectSpread$
|
|
1429
|
+
if (recognizeActions.includes(type)) return _objectSpread$1F(_objectSpread$1F({}, state), {}, {
|
|
1430
|
+
recognize: _objectSpread$1F(_objectSpread$1F({}, state.recognize), data)
|
|
1431
1431
|
});
|
|
1432
1432
|
return state;
|
|
1433
1433
|
}
|
|
@@ -1720,8 +1720,8 @@ function firstKeyOf(obj) {
|
|
|
1720
1720
|
}
|
|
1721
1721
|
function getSdataDefault() {
|
|
1722
1722
|
var schema = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : sdataSchema;
|
|
1723
|
-
var context = arguments.length > 1 ? arguments[1] : undefined;
|
|
1724
|
-
var fieldName = arguments.length > 2 ? arguments[2] : undefined;
|
|
1723
|
+
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
1724
|
+
var fieldName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
|
|
1725
1725
|
if (schema.key === 'Custom') {
|
|
1726
1726
|
var _schema$properties$co;
|
|
1727
1727
|
return (_schema$properties$co = schema.properties[context]) === null || _schema$properties$co === void 0 ? void 0 : _schema$properties$co["default"];
|
|
@@ -1731,8 +1731,8 @@ function getSdataDefault() {
|
|
|
1731
1731
|
return schema[context][fieldName] ? schema[context][fieldName].properties.fieldValue["default"] : '';
|
|
1732
1732
|
}
|
|
1733
1733
|
|
|
1734
|
-
function ownKeys$
|
|
1735
|
-
function _objectSpread$
|
|
1734
|
+
function ownKeys$1E(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1735
|
+
function _objectSpread$1E(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1E(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1E(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1736
1736
|
var initSdata = function initSdata(schema) {
|
|
1737
1737
|
var isCustomShema = schema.key === 'Custom';
|
|
1738
1738
|
var context = isCustomShema ? getSdataDefault(sdataCustomSchema, 'context') : getSdataDefault(sdataSchema);
|
|
@@ -1770,7 +1770,7 @@ var onContextChange = function onContextChange(state, payload) {
|
|
|
1770
1770
|
var fValue = fieldValue;
|
|
1771
1771
|
if (fValue === state.result.fieldValue) fValue = getSdataDefault(sdataCustomSchema, 'fieldValue');
|
|
1772
1772
|
return {
|
|
1773
|
-
result: _objectSpread$
|
|
1773
|
+
result: _objectSpread$1E(_objectSpread$1E({}, payload), {}, {
|
|
1774
1774
|
context: context,
|
|
1775
1775
|
fieldName: fieldName,
|
|
1776
1776
|
fieldValue: fValue
|
|
@@ -1784,7 +1784,7 @@ var onFieldNameChange = function onFieldNameChange(state, payload) {
|
|
|
1784
1784
|
if (sdataSchema[context][fieldName]) fieldValue = getSdataDefault(sdataSchema, context, fieldName);
|
|
1785
1785
|
if (fieldValue === state.result.fieldValue && sdataSchema[context][state.result.fieldName]) fieldValue = '';
|
|
1786
1786
|
return {
|
|
1787
|
-
result: _objectSpread$
|
|
1787
|
+
result: _objectSpread$1E(_objectSpread$1E({}, payload), {}, {
|
|
1788
1788
|
fieldName: fieldName,
|
|
1789
1789
|
fieldValue: fieldValue
|
|
1790
1790
|
})
|
|
@@ -1792,29 +1792,29 @@ var onFieldNameChange = function onFieldNameChange(state, payload) {
|
|
|
1792
1792
|
};
|
|
1793
1793
|
function sdataReducer(state, action) {
|
|
1794
1794
|
if (action.data.result.init) {
|
|
1795
|
-
return correctErrors(_objectSpread$
|
|
1796
|
-
result: _objectSpread$
|
|
1795
|
+
return correctErrors(_objectSpread$1E(_objectSpread$1E({}, state), {}, {
|
|
1796
|
+
result: _objectSpread$1E(_objectSpread$1E({}, state.result), action.data.result)
|
|
1797
1797
|
}), action.data);
|
|
1798
1798
|
}
|
|
1799
1799
|
var actionContext = action.data.result.context;
|
|
1800
1800
|
var actionFieldName = action.data.result.fieldName;
|
|
1801
1801
|
var newstate = null;
|
|
1802
1802
|
if (actionContext !== state.result.context) newstate = onContextChange(state, action.data.result);else if (actionFieldName !== state.result.fieldName) newstate = onFieldNameChange(state, action.data.result);
|
|
1803
|
-
newstate = newstate || _objectSpread$
|
|
1804
|
-
result: _objectSpread$
|
|
1803
|
+
newstate = newstate || _objectSpread$1E(_objectSpread$1E({}, state), {}, {
|
|
1804
|
+
result: _objectSpread$1E(_objectSpread$1E({}, state.result), action.data.result)
|
|
1805
1805
|
});
|
|
1806
1806
|
return correctErrors(newstate, action.data);
|
|
1807
1807
|
}
|
|
1808
1808
|
function nucleotideComponentReducer(state, action) {
|
|
1809
|
-
return _objectSpread$
|
|
1810
|
-
result: _objectSpread$
|
|
1809
|
+
return _objectSpread$1E(_objectSpread$1E({}, state), {}, {
|
|
1810
|
+
result: _objectSpread$1E(_objectSpread$1E(_objectSpread$1E({}, state.result), action.data.result), {}, {
|
|
1811
1811
|
type: 'nucleotideComponent'
|
|
1812
1812
|
})
|
|
1813
1813
|
});
|
|
1814
1814
|
}
|
|
1815
1815
|
|
|
1816
|
-
function ownKeys$
|
|
1817
|
-
function _objectSpread$
|
|
1816
|
+
function ownKeys$1D(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1817
|
+
function _objectSpread$1D(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1D(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1D(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1818
1818
|
var formsState = {
|
|
1819
1819
|
atomProps: {
|
|
1820
1820
|
errors: {},
|
|
@@ -1944,14 +1944,14 @@ function formReducer(state, action) {
|
|
|
1944
1944
|
var newType = (_action$data = action.data) === null || _action$data === void 0 || (_action$data = _action$data.result) === null || _action$data === void 0 ? void 0 : _action$data.type;
|
|
1945
1945
|
if (newType === 'DAT') return sdataReducer(state, action);
|
|
1946
1946
|
if (newType === 'SUP' && (state === null || state === void 0 || (_state$result = state.result) === null || _state$result === void 0 ? void 0 : _state$result.type) !== 'nucleotideComponent' && Object.values(ketcherCore.SUPERATOM_CLASS).includes((_action$data2 = action.data) === null || _action$data2 === void 0 || (_action$data2 = _action$data2.result) === null || _action$data2 === void 0 ? void 0 : _action$data2["class"])) return nucleotideComponentReducer(state, action);
|
|
1947
|
-
return _objectSpread$
|
|
1947
|
+
return _objectSpread$1D(_objectSpread$1D({}, state), action.data);
|
|
1948
1948
|
}
|
|
1949
1949
|
|
|
1950
1950
|
var INDIGO_VERIFICATION = 'INDIGO_VERIFICATION';
|
|
1951
1951
|
var ANALYZING_FILE = 'ANALYZING_FILE';
|
|
1952
1952
|
|
|
1953
|
-
function ownKeys$
|
|
1954
|
-
function _objectSpread$
|
|
1953
|
+
function ownKeys$1C(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1954
|
+
function _objectSpread$1C(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1C(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1C(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1955
1955
|
function indigoVerification(data) {
|
|
1956
1956
|
return {
|
|
1957
1957
|
type: INDIGO_VERIFICATION,
|
|
@@ -1976,13 +1976,13 @@ function requestReducer () {
|
|
|
1976
1976
|
switch (type) {
|
|
1977
1977
|
case INDIGO_VERIFICATION:
|
|
1978
1978
|
{
|
|
1979
|
-
return _objectSpread$
|
|
1979
|
+
return _objectSpread$1C(_objectSpread$1C({}, state), {}, {
|
|
1980
1980
|
indigoVerification: data
|
|
1981
1981
|
});
|
|
1982
1982
|
}
|
|
1983
1983
|
case ANALYZING_FILE:
|
|
1984
1984
|
{
|
|
1985
|
-
return _objectSpread$
|
|
1985
|
+
return _objectSpread$1C(_objectSpread$1C({}, state), {}, {
|
|
1986
1986
|
isAnalyzingFile: data
|
|
1987
1987
|
});
|
|
1988
1988
|
}
|
|
@@ -2001,8 +2001,8 @@ var supportedSGroupTypes = {
|
|
|
2001
2001
|
queryComponent: 'queryComponent'
|
|
2002
2002
|
};
|
|
2003
2003
|
|
|
2004
|
-
function ownKeys$
|
|
2005
|
-
function _objectSpread$
|
|
2004
|
+
function ownKeys$1B(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2005
|
+
function _objectSpread$1B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1B(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2006
2006
|
var atom = {
|
|
2007
2007
|
title: 'Atom',
|
|
2008
2008
|
type: 'object',
|
|
@@ -2234,7 +2234,7 @@ var sgroup = {
|
|
|
2234
2234
|
title: 'SGroup',
|
|
2235
2235
|
type: 'object',
|
|
2236
2236
|
required: ['type'],
|
|
2237
|
-
oneOf: [_objectSpread$
|
|
2237
|
+
oneOf: [_objectSpread$1B({}, sdataCustomSchema), {
|
|
2238
2238
|
key: 'MUL',
|
|
2239
2239
|
title: 'Multiple group',
|
|
2240
2240
|
type: 'object',
|
|
@@ -2383,12 +2383,12 @@ function matchCharge(charge) {
|
|
|
2383
2383
|
|
|
2384
2384
|
var _excluded$D = ["aromaticity", "ringMembership", "ringSize", "connectivity", "chirality", "customQuery"],
|
|
2385
2385
|
_excluded2$7 = ["type", "radiobuttons"];
|
|
2386
|
-
function ownKeys$
|
|
2387
|
-
function _objectSpread$
|
|
2386
|
+
function ownKeys$1A(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2387
|
+
function _objectSpread$1A(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1A(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1A(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2388
2388
|
var DefaultStereoGroupNumber = 1;
|
|
2389
2389
|
function fromElement(selem) {
|
|
2390
2390
|
if (selem.label === 'R#') {
|
|
2391
|
-
return _objectSpread$
|
|
2391
|
+
return _objectSpread$1A({
|
|
2392
2392
|
type: 'rlabel',
|
|
2393
2393
|
values: fromRlabel(selem.rglabel)
|
|
2394
2394
|
}, selem);
|
|
@@ -2497,7 +2497,7 @@ function toAtom(atom) {
|
|
|
2497
2497
|
customQuery = _atom$customQuery === void 0 ? '' : _atom$customQuery,
|
|
2498
2498
|
restAtom = _objectWithoutProperties__default["default"](atom, _excluded$D);
|
|
2499
2499
|
if (customQuery && customQuery !== '') {
|
|
2500
|
-
return _objectSpread$
|
|
2500
|
+
return _objectSpread$1A(_objectSpread$1A({}, restAtom), {}, {
|
|
2501
2501
|
label: 'A',
|
|
2502
2502
|
atomList: null,
|
|
2503
2503
|
pseudo: null,
|
|
@@ -2526,7 +2526,7 @@ function toAtom(atom) {
|
|
|
2526
2526
|
}
|
|
2527
2527
|
var pch = matchCharge(restAtom.charge);
|
|
2528
2528
|
var charge = pch ? parseInt(pch[1] + pch[3] + pch[2]) : restAtom.charge;
|
|
2529
|
-
var conv = _objectSpread$
|
|
2529
|
+
var conv = _objectSpread$1A(_objectSpread$1A({}, restAtom), {}, {
|
|
2530
2530
|
isotope: restAtom.isotope ? Number(restAtom.isotope) : null,
|
|
2531
2531
|
charge: restAtom.charge && charge !== 0 ? Number(charge) : null,
|
|
2532
2532
|
alias: restAtom.alias || null,
|
|
@@ -2644,7 +2644,7 @@ function fromBond(sbond) {
|
|
|
2644
2644
|
}
|
|
2645
2645
|
function toBond(bond) {
|
|
2646
2646
|
var isCustomQuery = bond.customQuery !== '';
|
|
2647
|
-
return _objectSpread$
|
|
2647
|
+
return _objectSpread$1A({
|
|
2648
2648
|
topology: bond.topology,
|
|
2649
2649
|
reactingCenterStatus: bond.center,
|
|
2650
2650
|
customQuery: !isCustomQuery ? null : bond.customQuery
|
|
@@ -2709,7 +2709,7 @@ var bondCaptionMap = {
|
|
|
2709
2709
|
}
|
|
2710
2710
|
};
|
|
2711
2711
|
function toBondType(caption) {
|
|
2712
|
-
return _objectSpread$
|
|
2712
|
+
return _objectSpread$1A({}, bondCaptionMap[caption]);
|
|
2713
2713
|
}
|
|
2714
2714
|
function fromBondType(type, stereo) {
|
|
2715
2715
|
for (var caption in bondCaptionMap) {
|
|
@@ -2733,7 +2733,7 @@ function fromSgroup(ssgroup) {
|
|
|
2733
2733
|
fieldName: fieldName || getSdataDefault(sdataCustomSchema, 'fieldName'),
|
|
2734
2734
|
fieldValue: fieldValue || getSdataDefault(sdataCustomSchema, 'fieldValue')
|
|
2735
2735
|
} : {};
|
|
2736
|
-
return _objectSpread$
|
|
2736
|
+
return _objectSpread$1A(_objectSpread$1A({
|
|
2737
2737
|
type: type
|
|
2738
2738
|
}, ssgroup.attrs), sDataInitValue);
|
|
2739
2739
|
}
|
|
@@ -2741,7 +2741,7 @@ function toSgroup(sgroup) {
|
|
|
2741
2741
|
var type = sgroup.type,
|
|
2742
2742
|
radiobuttons = sgroup.radiobuttons,
|
|
2743
2743
|
props = _objectWithoutProperties__default["default"](sgroup, _excluded2$7);
|
|
2744
|
-
var attrs = _objectSpread$
|
|
2744
|
+
var attrs = _objectSpread$1A({}, props);
|
|
2745
2745
|
var absolute = 'absolute';
|
|
2746
2746
|
var attached = 'attached';
|
|
2747
2747
|
switch (radiobuttons) {
|
|
@@ -5978,8 +5978,8 @@ var errors = {
|
|
|
5978
5978
|
codes: codes_1
|
|
5979
5979
|
};
|
|
5980
5980
|
|
|
5981
|
-
function ownKeys$
|
|
5982
|
-
function _objectSpread$
|
|
5981
|
+
function ownKeys$1z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5982
|
+
function _objectSpread$1z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1z(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5983
5983
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5984
5984
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
5985
5985
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
@@ -6407,7 +6407,7 @@ var AssertionError = /*#__PURE__*/function (_Error, _inspect$custom) {
|
|
|
6407
6407
|
// the minimum depth. Otherwise those values would be too verbose compared
|
|
6408
6408
|
// to the actual error message which contains a combined view of these two
|
|
6409
6409
|
// input values.
|
|
6410
|
-
return inspect(this, _objectSpread$
|
|
6410
|
+
return inspect(this, _objectSpread$1z(_objectSpread$1z({}, ctx), {}, {
|
|
6411
6411
|
customInspect: false,
|
|
6412
6412
|
depth: 0
|
|
6413
6413
|
}));
|
|
@@ -7931,8 +7931,8 @@ assert.strict.strict = assert.strict;
|
|
|
7931
7931
|
|
|
7932
7932
|
var _excluded$C = ["rescale", "fragment"],
|
|
7933
7933
|
_excluded2$6 = ["isPaste", "method"];
|
|
7934
|
-
function ownKeys$
|
|
7935
|
-
function _objectSpread$
|
|
7934
|
+
function ownKeys$1y(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7935
|
+
function _objectSpread$1y(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1y(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1y(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7936
7936
|
function onAction(action) {
|
|
7937
7937
|
if (action !== null && action !== void 0 && action.dialog) {
|
|
7938
7938
|
return {
|
|
@@ -7988,7 +7988,7 @@ function load(struct, options) {
|
|
|
7988
7988
|
errorHandler = editor.errorHandler;
|
|
7989
7989
|
options = options || {};
|
|
7990
7990
|
_options2 = options, isPaste = _options2.isPaste, method = _options2.method, otherOptions = _objectWithoutProperties__default["default"](_options2, _excluded2$6);
|
|
7991
|
-
otherOptions = _objectSpread$
|
|
7991
|
+
otherOptions = _objectSpread$1y(_objectSpread$1y({}, serverSettings), otherOptions);
|
|
7992
7992
|
dispatch(setAnalyzingFile(true));
|
|
7993
7993
|
_context.prev = 9;
|
|
7994
7994
|
_context.next = 12;
|
|
@@ -8132,8 +8132,8 @@ function openInfoModalWithCustomMessage(message) {
|
|
|
8132
8132
|
};
|
|
8133
8133
|
}
|
|
8134
8134
|
|
|
8135
|
-
function ownKeys$
|
|
8136
|
-
function _objectSpread$
|
|
8135
|
+
function ownKeys$1x(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8136
|
+
function _objectSpread$1x(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1x(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1x(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8137
8137
|
function checkServer() {
|
|
8138
8138
|
return function (dispatch, getState) {
|
|
8139
8139
|
var _getState = getState(),
|
|
@@ -8276,12 +8276,12 @@ function serverCall(editor, server, method, options, struct) {
|
|
|
8276
8276
|
resetStereoFlagsPosition(currentStruct);
|
|
8277
8277
|
}
|
|
8278
8278
|
var ketSerializer = new ketcherCore.KetSerializer();
|
|
8279
|
-
var serializedStruct = ketSerializer.serialize(currentStruct, undefined, _objectSpread$
|
|
8279
|
+
var serializedStruct = ketSerializer.serialize(currentStruct, undefined, _objectSpread$1x(_objectSpread$1x({}, selection), {}, {
|
|
8280
8280
|
atoms: selectedAtoms,
|
|
8281
8281
|
bonds: selectedBonds
|
|
8282
8282
|
}));
|
|
8283
8283
|
return server.then(function () {
|
|
8284
|
-
return server[method](_objectSpread$
|
|
8284
|
+
return server[method](_objectSpread$1x(_objectSpread$1x(_objectSpread$1x({
|
|
8285
8285
|
struct: serializedStruct
|
|
8286
8286
|
}, method !== 'calculate' && method !== 'check' ? {
|
|
8287
8287
|
output_format: ketcherCore.ChemicalMimeType.KET
|
|
@@ -8535,7 +8535,7 @@ var zoom = {
|
|
|
8535
8535
|
|
|
8536
8536
|
var openHelpLink = function openHelpLink() {
|
|
8537
8537
|
var _window$open;
|
|
8538
|
-
return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v3.12.0-
|
|
8538
|
+
return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v3.12.0-rc.1\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
|
|
8539
8539
|
};
|
|
8540
8540
|
var help = {
|
|
8541
8541
|
help: {
|
|
@@ -8678,8 +8678,8 @@ var fullscreen = {
|
|
|
8678
8678
|
}
|
|
8679
8679
|
};
|
|
8680
8680
|
|
|
8681
|
-
function ownKeys$
|
|
8682
|
-
function _objectSpread$
|
|
8681
|
+
function ownKeys$1w(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8682
|
+
function _objectSpread$1w(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1w(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1w(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8683
8683
|
var disableIfViewOnly = function disableIfViewOnly(editor) {
|
|
8684
8684
|
return !!editor.render.options.viewOnlyMode;
|
|
8685
8685
|
};
|
|
@@ -8688,13 +8688,13 @@ var updateConfigItem = function updateConfigItem(item) {
|
|
|
8688
8688
|
return item;
|
|
8689
8689
|
} else if (typeof item.disabled === 'function') {
|
|
8690
8690
|
var originalDisabled = item.disabled;
|
|
8691
|
-
return _objectSpread$
|
|
8691
|
+
return _objectSpread$1w(_objectSpread$1w({}, item), {}, {
|
|
8692
8692
|
disabled: function disabled() {
|
|
8693
8693
|
return disableIfViewOnly(arguments.length <= 0 ? undefined : arguments[0]) || originalDisabled.apply(void 0, arguments);
|
|
8694
8694
|
}
|
|
8695
8695
|
});
|
|
8696
8696
|
} else {
|
|
8697
|
-
return _objectSpread$
|
|
8697
|
+
return _objectSpread$1w(_objectSpread$1w({}, item), {}, {
|
|
8698
8698
|
disabled: disableIfViewOnly
|
|
8699
8699
|
});
|
|
8700
8700
|
}
|
|
@@ -9031,11 +9031,11 @@ var config = {
|
|
|
9031
9031
|
}
|
|
9032
9032
|
}
|
|
9033
9033
|
};
|
|
9034
|
-
var configWithNonViewOnlyActionsDisabled = Object.entries(_objectSpread$
|
|
9034
|
+
var configWithNonViewOnlyActionsDisabled = Object.entries(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w({}, config), config$1), debugObj), tools), atoms), zoom), templates), functionalGroupsLib), fullscreen), help)).reduce(function (acc, _ref2) {
|
|
9035
9035
|
var _ref3 = _slicedToArray__default["default"](_ref2, 2),
|
|
9036
9036
|
key = _ref3[0],
|
|
9037
9037
|
item = _ref3[1];
|
|
9038
|
-
return _objectSpread$
|
|
9038
|
+
return _objectSpread$1w(_objectSpread$1w({}, acc), {}, _defineProperty__default["default"]({}, key, updateConfigItem(item)));
|
|
9039
9039
|
}, {});
|
|
9040
9040
|
function hasSelection(editor) {
|
|
9041
9041
|
var selection = editor.selection();
|
|
@@ -13316,12 +13316,12 @@ var IconButtonBase = function IconButtonBase(_ref) {
|
|
|
13316
13316
|
};
|
|
13317
13317
|
|
|
13318
13318
|
var _excluded$B = ["iconName"];
|
|
13319
|
-
function ownKeys$
|
|
13320
|
-
function _objectSpread$
|
|
13319
|
+
function ownKeys$1v(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13320
|
+
function _objectSpread$1v(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1v(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1v(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13321
13321
|
var IconButton = function IconButton(_ref) {
|
|
13322
13322
|
var iconName = _ref.iconName,
|
|
13323
13323
|
props = _objectWithoutProperties__default["default"](_ref, _excluded$B);
|
|
13324
|
-
return jsxRuntime.jsx(IconButtonBase, _objectSpread$
|
|
13324
|
+
return jsxRuntime.jsx(IconButtonBase, _objectSpread$1v(_objectSpread$1v({}, props), {}, {
|
|
13325
13325
|
children: jsxRuntime.jsx(StyledIcon$1, {
|
|
13326
13326
|
name: iconName
|
|
13327
13327
|
})
|
|
@@ -13329,12 +13329,12 @@ var IconButton = function IconButton(_ref) {
|
|
|
13329
13329
|
};
|
|
13330
13330
|
|
|
13331
13331
|
var _excluded$A = ["link"];
|
|
13332
|
-
function ownKeys$
|
|
13333
|
-
function _objectSpread$
|
|
13332
|
+
function ownKeys$1u(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13333
|
+
function _objectSpread$1u(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1u(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1u(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13334
13334
|
var IconButtonCustomIcon = function IconButtonCustomIcon(_ref) {
|
|
13335
13335
|
var link = _ref.link,
|
|
13336
13336
|
props = _objectWithoutProperties__default["default"](_ref, _excluded$A);
|
|
13337
|
-
return jsxRuntime.jsx(IconButtonBase, _objectSpread$
|
|
13337
|
+
return jsxRuntime.jsx(IconButtonBase, _objectSpread$1u(_objectSpread$1u({}, props), {}, {
|
|
13338
13338
|
children: jsxRuntime.jsx(StyledCustomIcon, {
|
|
13339
13339
|
src: link,
|
|
13340
13340
|
alt: props.title
|
|
@@ -13365,12 +13365,12 @@ var StyledButton = styled__default["default"].button({
|
|
|
13365
13365
|
});
|
|
13366
13366
|
|
|
13367
13367
|
var _excluded$z = ["children"];
|
|
13368
|
-
function ownKeys$
|
|
13369
|
-
function _objectSpread$
|
|
13368
|
+
function ownKeys$1t(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13369
|
+
function _objectSpread$1t(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1t(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1t(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13370
13370
|
var Button = function Button(_ref) {
|
|
13371
13371
|
var children = _ref.children,
|
|
13372
13372
|
props = _objectWithoutProperties__default["default"](_ref, _excluded$z);
|
|
13373
|
-
return jsxRuntime.jsx(StyledButton, _objectSpread$
|
|
13373
|
+
return jsxRuntime.jsx(StyledButton, _objectSpread$1t(_objectSpread$1t({}, props), {}, {
|
|
13374
13374
|
children: children
|
|
13375
13375
|
}));
|
|
13376
13376
|
};
|
|
@@ -13438,10 +13438,10 @@ var StyledInput$1 = styled__default["default"].input({
|
|
|
13438
13438
|
}
|
|
13439
13439
|
});
|
|
13440
13440
|
|
|
13441
|
-
function ownKeys$
|
|
13442
|
-
function _objectSpread$
|
|
13441
|
+
function ownKeys$1s(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13442
|
+
function _objectSpread$1s(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1s(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1s(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13443
13443
|
var Input$2 = function Input(props) {
|
|
13444
|
-
return jsxRuntime.jsx(StyledInput$1, _objectSpread$
|
|
13444
|
+
return jsxRuntime.jsx(StyledInput$1, _objectSpread$1s({}, props));
|
|
13445
13445
|
};
|
|
13446
13446
|
|
|
13447
13447
|
var Container$1 = styled__default["default"].div({
|
|
@@ -13537,8 +13537,8 @@ var InfoModal$1 = function InfoModal(_ref) {
|
|
|
13537
13537
|
var styles$r = {"button-common-styles":"Dialog-module_button-common-styles__Xehyp","scrollbar":"Dialog-module_scrollbar__L8hUr","dialog":"Dialog-module_dialog__hiRBI","hide":"Dialog-module_hide__bbkvB","header":"Dialog-module_header__8QGek","btnContainer":"Dialog-module_btnContainer__ulrFM","buttonTop":"Dialog-module_buttonTop__91ha8","closeButton":"Dialog-module_closeButton__XyaAE","footer":"Dialog-module_footer__PliV0","ok":"Dialog-module_ok__BUQ6q","cancel":"Dialog-module_cancel__8d83c","withDivider":"Dialog-module_withDivider__YBKiQ","body":"Dialog-module_body__EWh4H","withMargin":"Dialog-module_withMargin__-zVS4"};
|
|
13538
13538
|
|
|
13539
13539
|
var _excluded$y = ["children", "title", "params", "result", "valid", "buttons", "headerContent", "footerContent", "className", "buttonsNameMap", "needMargin", "withDivider", "focusable", "primaryButtons"];
|
|
13540
|
-
function ownKeys$
|
|
13541
|
-
function _objectSpread$
|
|
13540
|
+
function ownKeys$1r(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13541
|
+
function _objectSpread$1r(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1r(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1r(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13542
13542
|
var Dialog = function Dialog(props) {
|
|
13543
13543
|
var children = props.children,
|
|
13544
13544
|
title = props.title,
|
|
@@ -13601,7 +13601,7 @@ var Dialog = function Dialog(props) {
|
|
|
13601
13601
|
}
|
|
13602
13602
|
};
|
|
13603
13603
|
return (
|
|
13604
|
-
jsxRuntime.jsxs("div", _objectSpread$
|
|
13604
|
+
jsxRuntime.jsxs("div", _objectSpread$1r(_objectSpread$1r({
|
|
13605
13605
|
ref: dialogRef,
|
|
13606
13606
|
role: "dialog",
|
|
13607
13607
|
"data-testid": 'info-modal-window',
|
|
@@ -14174,8 +14174,8 @@ function usePortalStyle(_ref) {
|
|
|
14174
14174
|
return [portalStyle];
|
|
14175
14175
|
}
|
|
14176
14176
|
|
|
14177
|
-
function ownKeys$
|
|
14178
|
-
function _objectSpread$
|
|
14177
|
+
function ownKeys$1q(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14178
|
+
function _objectSpread$1q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1q(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14179
14179
|
var ToolbarMultiToolItem = function ToolbarMultiToolItem(props) {
|
|
14180
14180
|
var id = props.id,
|
|
14181
14181
|
options = props.options,
|
|
@@ -14250,7 +14250,7 @@ var ToolbarMultiToolItem = function ToolbarMultiToolItem(props) {
|
|
|
14250
14250
|
ref: ref,
|
|
14251
14251
|
className: classes$N.root,
|
|
14252
14252
|
"data-testid": "".concat(id, "-drop-down-button"),
|
|
14253
|
-
children: [jsxRuntime.jsx(ActionButton, _objectSpread$
|
|
14253
|
+
children: [jsxRuntime.jsx(ActionButton, _objectSpread$1q(_objectSpread$1q({}, actionButtonProps), {}, {
|
|
14254
14254
|
className: className,
|
|
14255
14255
|
name: iconName,
|
|
14256
14256
|
action: configWithNonViewOnlyActionsDisabled[currentId],
|
|
@@ -14359,8 +14359,8 @@ var TemplatesList = function TemplatesList(props) {
|
|
|
14359
14359
|
var classes$M = {"button-common-styles":"BottomToolbar-module_button-common-styles__PbtE9","scrollbar":"BottomToolbar-module_scrollbar__i1f8P","group":"BottomToolbar-module_group__b-pGt","root":"BottomToolbar-module_root__kjkSm"};
|
|
14360
14360
|
|
|
14361
14361
|
var _excluded$x = ["className"];
|
|
14362
|
-
function ownKeys$
|
|
14363
|
-
function _objectSpread$
|
|
14362
|
+
function ownKeys$1p(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14363
|
+
function _objectSpread$1p(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1p(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1p(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14364
14364
|
var Group$2 = function Group(_ref) {
|
|
14365
14365
|
var children = _ref.children,
|
|
14366
14366
|
className = _ref.className;
|
|
@@ -14376,22 +14376,22 @@ var BottomToolbar = function BottomToolbar(props) {
|
|
|
14376
14376
|
"data-testid": "bottom-toolbar",
|
|
14377
14377
|
className: clsx__default["default"](classes$M.root, className),
|
|
14378
14378
|
children: jsxRuntime.jsxs(Group$2, {
|
|
14379
|
-
children: [jsxRuntime.jsx(TemplatesList, _objectSpread$
|
|
14379
|
+
children: [jsxRuntime.jsx(TemplatesList, _objectSpread$1p({}, rest)), jsxRuntime.jsx(ToolbarGroupItem, _objectSpread$1p({
|
|
14380
14380
|
id: "template-lib"
|
|
14381
14381
|
}, rest))]
|
|
14382
14382
|
})
|
|
14383
14383
|
});
|
|
14384
14384
|
};
|
|
14385
14385
|
|
|
14386
|
-
function ownKeys$
|
|
14387
|
-
function _objectSpread$
|
|
14386
|
+
function ownKeys$1o(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14387
|
+
function _objectSpread$1o(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1o(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1o(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14388
14388
|
function openDialog(dispatch, dialogName, props) {
|
|
14389
14389
|
return new Promise(function (resolve, reject) {
|
|
14390
14390
|
dispatch({
|
|
14391
14391
|
type: 'MODAL_OPEN',
|
|
14392
14392
|
data: {
|
|
14393
14393
|
name: dialogName,
|
|
14394
|
-
prop: _objectSpread$
|
|
14394
|
+
prop: _objectSpread$1o(_objectSpread$1o({}, props), {}, {
|
|
14395
14395
|
onResult: resolve,
|
|
14396
14396
|
onCancel: reject
|
|
14397
14397
|
})
|
|
@@ -14410,14 +14410,14 @@ function modalReducer() {
|
|
|
14410
14410
|
return null;
|
|
14411
14411
|
}
|
|
14412
14412
|
var formState = formReducer(state.form, action);
|
|
14413
|
-
return _objectSpread$
|
|
14413
|
+
return _objectSpread$1o(_objectSpread$1o({}, state), {}, {
|
|
14414
14414
|
form: formState
|
|
14415
14415
|
});
|
|
14416
14416
|
}
|
|
14417
14417
|
switch (type) {
|
|
14418
14418
|
case 'MODAL_CLOSE':
|
|
14419
14419
|
if (state !== null && state !== void 0 && state.parentModal) {
|
|
14420
|
-
state.parentModal.prop = _objectSpread$
|
|
14420
|
+
state.parentModal.prop = _objectSpread$1o(_objectSpread$1o(_objectSpread$1o({}, state.parentModal.prop), state.parentModal.form.result), {}, {
|
|
14421
14421
|
isRestoredModal: true
|
|
14422
14422
|
});
|
|
14423
14423
|
return state.parentModal;
|
|
@@ -14435,8 +14435,8 @@ function modalReducer() {
|
|
|
14435
14435
|
}
|
|
14436
14436
|
}
|
|
14437
14437
|
|
|
14438
|
-
function ownKeys$
|
|
14439
|
-
function _objectSpread$
|
|
14438
|
+
function ownKeys$1n(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14439
|
+
function _objectSpread$1n(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1n(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1n(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14440
14440
|
function selectTmpl(tmpl) {
|
|
14441
14441
|
return {
|
|
14442
14442
|
type: 'TMPL_SELECT',
|
|
@@ -14504,7 +14504,7 @@ function editTmpl(tmpl) {
|
|
|
14504
14504
|
tmpl: tmpl
|
|
14505
14505
|
}).then(function (formData) {
|
|
14506
14506
|
tmpl.struct.name = formData ? formData.name.trim() : tmpl.struct.name;
|
|
14507
|
-
tmpl.props = formData ? _objectSpread$
|
|
14507
|
+
tmpl.props = formData ? _objectSpread$1n(_objectSpread$1n({}, tmpl.props || {}), formData.attach || {}) : tmpl.props;
|
|
14508
14508
|
if (tmpl.props.group === 'User Templates') updateLocalStore(getState().templates.lib);
|
|
14509
14509
|
}, function () {
|
|
14510
14510
|
return null;
|
|
@@ -14544,7 +14544,7 @@ function saveUserTmpl(struct) {
|
|
|
14544
14544
|
var name = _ref.name,
|
|
14545
14545
|
attach = _ref.attach;
|
|
14546
14546
|
tmpl.struct.name = name.trim();
|
|
14547
|
-
tmpl.props = _objectSpread$
|
|
14547
|
+
tmpl.props = _objectSpread$1n(_objectSpread$1n({}, attach), {}, {
|
|
14548
14548
|
group: 'User Templates'
|
|
14549
14549
|
});
|
|
14550
14550
|
var lib = getState().templates.lib.concat(tmpl);
|
|
@@ -14562,7 +14562,7 @@ function updateLocalStore(lib) {
|
|
|
14562
14562
|
}).map(function (item) {
|
|
14563
14563
|
return {
|
|
14564
14564
|
struct: ketSerializer.serialize(item.struct),
|
|
14565
|
-
props: _objectSpread$
|
|
14565
|
+
props: _objectSpread$1n({}, fp.omit(['group'], item.props) || {})
|
|
14566
14566
|
};
|
|
14567
14567
|
});
|
|
14568
14568
|
storage.setItem('ketcher-tmpls', userLib);
|
|
@@ -14581,19 +14581,19 @@ var attachActions = ['INIT_ATTACH', 'SET_ATTACH_POINTS', 'SET_TMPL_NAME'];
|
|
|
14581
14581
|
function templatesReducer() {
|
|
14582
14582
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initTmplsState;
|
|
14583
14583
|
var action = arguments.length > 1 ? arguments[1] : undefined;
|
|
14584
|
-
if (tmplActions.includes(action.type)) return _objectSpread$
|
|
14584
|
+
if (tmplActions.includes(action.type)) return _objectSpread$1n(_objectSpread$1n({}, state), action.data || {});
|
|
14585
14585
|
if (attachActions.includes(action.type)) {
|
|
14586
|
-
var attach = _objectSpread$
|
|
14587
|
-
return _objectSpread$
|
|
14586
|
+
var attach = _objectSpread$1n(_objectSpread$1n({}, state.attach), action.data || {});
|
|
14587
|
+
return _objectSpread$1n(_objectSpread$1n({}, state), {}, {
|
|
14588
14588
|
attach: attach
|
|
14589
14589
|
});
|
|
14590
14590
|
}
|
|
14591
14591
|
if (action.type === 'TMPL_DELETE') {
|
|
14592
|
-
var currentState = _objectSpread$
|
|
14592
|
+
var currentState = _objectSpread$1n({}, state);
|
|
14593
14593
|
var lib = currentState.lib.filter(function (value) {
|
|
14594
14594
|
return value !== action.data.tmpl;
|
|
14595
14595
|
});
|
|
14596
|
-
return _objectSpread$
|
|
14596
|
+
return _objectSpread$1n(_objectSpread$1n({}, currentState), {}, {
|
|
14597
14597
|
lib: lib
|
|
14598
14598
|
});
|
|
14599
14599
|
}
|
|
@@ -14655,8 +14655,8 @@ function abbreviationLookupReducer() {
|
|
|
14655
14655
|
}
|
|
14656
14656
|
}
|
|
14657
14657
|
|
|
14658
|
-
function ownKeys$
|
|
14659
|
-
function _objectSpread$
|
|
14658
|
+
function ownKeys$1m(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14659
|
+
function _objectSpread$1m(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1m(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1m(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14660
14660
|
var initialState$3 = {
|
|
14661
14661
|
cursorPosition: {
|
|
14662
14662
|
x: 0,
|
|
@@ -14679,7 +14679,7 @@ function commonReducer() {
|
|
|
14679
14679
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState$3;
|
|
14680
14680
|
var action = arguments.length > 1 ? arguments[1] : undefined;
|
|
14681
14681
|
if (action.type === COMMON_ACTIONS.COMMON_UPDATE_CURSOR_POSITION) {
|
|
14682
|
-
return _objectSpread$
|
|
14682
|
+
return _objectSpread$1m(_objectSpread$1m({}, state), {}, {
|
|
14683
14683
|
cursorPosition: {
|
|
14684
14684
|
x: action.data.x,
|
|
14685
14685
|
y: action.data.y
|
|
@@ -14690,8 +14690,8 @@ function commonReducer() {
|
|
|
14690
14690
|
}
|
|
14691
14691
|
|
|
14692
14692
|
var _excluded$w = ["type", "action"];
|
|
14693
|
-
function ownKeys$
|
|
14694
|
-
function _objectSpread$
|
|
14693
|
+
function ownKeys$1l(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14694
|
+
function _objectSpread$1l(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1l(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1l(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14695
14695
|
function execute(activeTool, _ref) {
|
|
14696
14696
|
var action = _ref.action,
|
|
14697
14697
|
editor = _ref.editor,
|
|
@@ -14751,7 +14751,7 @@ function actionStateReducer () {
|
|
|
14751
14751
|
case 'ACTION':
|
|
14752
14752
|
{
|
|
14753
14753
|
var _activeTool;
|
|
14754
|
-
activeTool = execute(state === null || state === void 0 ? void 0 : state.activeTool, _objectSpread$
|
|
14754
|
+
activeTool = execute(state === null || state === void 0 ? void 0 : state.activeTool, _objectSpread$1l(_objectSpread$1l({}, params), {}, {
|
|
14755
14755
|
action: action
|
|
14756
14756
|
}));
|
|
14757
14757
|
if (((_activeTool = activeTool) === null || _activeTool === void 0 ? void 0 : _activeTool.tool) === 'select') {
|
|
@@ -15047,8 +15047,8 @@ function setFunctionalGroupsTooltip(_ref) {
|
|
|
15047
15047
|
showTooltip(editor, infoPanelData);
|
|
15048
15048
|
}
|
|
15049
15049
|
|
|
15050
|
-
function ownKeys$
|
|
15051
|
-
function _objectSpread$
|
|
15050
|
+
function ownKeys$1k(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15051
|
+
function _objectSpread$1k(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1k(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1k(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15052
15052
|
var initialState$2 = {
|
|
15053
15053
|
lib: [],
|
|
15054
15054
|
functionalGroupInfo: null,
|
|
@@ -15056,14 +15056,14 @@ var initialState$2 = {
|
|
|
15056
15056
|
};
|
|
15057
15057
|
var functionalGroupsReducer = function functionalGroupsReducer() {
|
|
15058
15058
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState$2;
|
|
15059
|
-
var
|
|
15060
|
-
|
|
15061
|
-
payload =
|
|
15059
|
+
var action = arguments.length > 1 ? arguments[1] : undefined;
|
|
15060
|
+
var type = action.type,
|
|
15061
|
+
payload = action.payload;
|
|
15062
15062
|
switch (type) {
|
|
15063
15063
|
case 'FG_INIT':
|
|
15064
|
-
return _objectSpread$
|
|
15064
|
+
return _objectSpread$1k(_objectSpread$1k({}, state), payload);
|
|
15065
15065
|
case 'FG_HIGHLIGHT':
|
|
15066
|
-
return _objectSpread$
|
|
15066
|
+
return _objectSpread$1k(_objectSpread$1k({}, state), {}, {
|
|
15067
15067
|
functionalGroupInfo: payload
|
|
15068
15068
|
});
|
|
15069
15069
|
default:
|
|
@@ -15090,7 +15090,7 @@ function notDebouncedHighlightFG(dispatch, group) {
|
|
|
15090
15090
|
var highlightFG = memoizedDebounce(notDebouncedHighlightFG, TOOLTIP_DELAY / 3, [0]);
|
|
15091
15091
|
function initFGTemplates() {
|
|
15092
15092
|
return function () {
|
|
15093
|
-
var
|
|
15093
|
+
var _ref = _asyncToGenerator__default["default"]( _regeneratorRuntime__default["default"].mark(function _callee(dispatch) {
|
|
15094
15094
|
var provider, sdfSerializer, templates, functionalGroups;
|
|
15095
15095
|
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
15096
15096
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -15098,8 +15098,8 @@ function initFGTemplates() {
|
|
|
15098
15098
|
provider = ketcherCore.FunctionalGroupsProvider.getInstance();
|
|
15099
15099
|
sdfSerializer = new ketcherCore.SdfSerializer();
|
|
15100
15100
|
templates = sdfSerializer.deserialize(templatesRawData$1);
|
|
15101
|
-
functionalGroups = templates.reduce(function (acc,
|
|
15102
|
-
var struct =
|
|
15101
|
+
functionalGroups = templates.reduce(function (acc, _ref2) {
|
|
15102
|
+
var struct = _ref2.struct;
|
|
15103
15103
|
return [].concat(_toConsumableArray__default["default"](acc), [struct]);
|
|
15104
15104
|
}, []);
|
|
15105
15105
|
provider.setFunctionalGroupsList(functionalGroups);
|
|
@@ -15114,26 +15114,26 @@ function initFGTemplates() {
|
|
|
15114
15114
|
}, _callee);
|
|
15115
15115
|
}));
|
|
15116
15116
|
return function (_x) {
|
|
15117
|
-
return
|
|
15117
|
+
return _ref.apply(this, arguments);
|
|
15118
15118
|
};
|
|
15119
15119
|
}();
|
|
15120
15120
|
}
|
|
15121
15121
|
|
|
15122
15122
|
var templatesRawData = "acetic acid\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 acetic acid\nM END\n> <name>\nacetic acid\n\n> <abbreviation>\nacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\nacetic anhydride\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1123 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1124 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4114 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 acetic anhydride\nM END\n> <name>\nacetic anhydride\n\n> <abbreviation>\nacetic anhydride\n\n> <group>\nSalts and Solvents\n\n$$$$\nformic acid\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 formic acid\nM END\n> <name>\nformic acid\n\n> <abbreviation>\nformic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethane sulphonic acid\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 -0.9857 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.0143 0.5143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.9857 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 2 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 methane sulphonic acid\nM END\n> <name>\nmethane sulphonic acid\n\n> <abbreviation>\nmethane sulphonic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\npropionic acid\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0838 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 propionic acid\nM END\n> <name>\npropionic acid\n\n> <abbreviation>\npropionic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-propanediol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n -3.3587 -3.5057 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0597 -2.7557 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0596 -1.2558 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7606 -3.5057 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5384 -2.7557 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 1,2-propanediol\nM END\n> <name>\n1,2-propanediol\n\n> <abbreviation>\n1,2-propanediol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,3-propanediol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 15.0779 -8.5508 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.3769 -9.3007 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.6759 -8.5507 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 18.9750 -9.3007 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 20.2740 -8.5507 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 1,3-propanediol\nM END\n> <name>\n1,3-propanediol\n\n> <abbreviation>\n1,3-propanediol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,4-butanediol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -0.3480 1.2991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9509 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2500 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8481 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1472 2.0491 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 1,4-butanediol\nM END\n> <name>\n1,4-butanediol\n\n> <abbreviation>\n1,4-butanediol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1-butanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 1.0786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 1-butanol\nM END\n> <name>\n1-butanol\n\n> <abbreviation>\n1-butanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1-propanol\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 1-propanol\nM END\n> <name>\n1-propanol\n\n> <abbreviation>\n1-propanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-butanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.1714 2.7286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 2-butanol\nM END\n> <name>\n2-butanol\n\n> <abbreviation>\n2-butanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-ethylhexanol\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n 10.7337 0.4167 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1355 0.4167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8365 -0.3333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5375 0.4167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1355 1.9167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.4345 -0.3333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2384 -0.3333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.4345 2.6667 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9394 0.4167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 6 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 5 1 0 0 0 0\n 2 6 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 7 1 0 0 0 0\n 5 8 1 0 0 0 0\n 7 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 2-ethylhexanol\nM END\n> <name>\n2-ethylhexanol\n\n> <abbreviation>\n2-ethylhexanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nisopropanol\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.1714 2.7286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 2-propanol\nM END\n> <name>\nisopropanol\n\n> <abbreviation>\n2-propanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-methoxyethanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 1.0786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 0.3286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 2-methoxyethanol\nM END\n> <name>\n2-methoxyethanol\n\n> <abbreviation>\n2-methoxyethanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-pentanol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -5.1971 -3.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.8980 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5991 -3.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.0009 -3.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3000 -1.2500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-pentanol\nM END\n> <name>\n2-pentanol\n\n> <abbreviation>\n2-pentanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nbenzyl alcohol\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 2.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\n 7 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 benzyl alcohol\nM END\n> <name>\nbenzyl alcohol\n\n> <abbreviation>\nbenzyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclohexanol\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 4.2990 2.0175 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 0.5175 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.2325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -0.2325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.7325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -1.7325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -2.4825 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 cyclohexanol\nM END\n> <name>\ncyclohexanol\n\n> <abbreviation>\ncyclohexanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nethanol\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 ethyl alcohol\nM END\n> <name>\nethanol\n\n> <abbreviation>\nethyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\nethylene glycol\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7256 0.4786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 ethane-1,2-diol\nM END\n> <name>\nethylene glycol\n\n> <abbreviation>\nethane-1,2-diol\n\n> <group>\nSalts and Solvents\n\n$$$$\nglycerol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.9915 2.6580 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2906 1.9080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5896 2.6580 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5897 4.1580 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8887 1.9080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1878 2.6580 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 glycerol\nM END\n> <name>\nglycerol\n\n> <abbreviation>\nglycerol\n\n> <group>\nSalts and Solvents\n\n$$$$\nisoamyl alcohol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.1714 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 1.0786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 -1.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 isoamyl alcohol\nM END\n> <name>\nisoamyl alcohol\n\n> <abbreviation>\nisoamyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\nisobutanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 2.7286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 isobutanol\nM END\n> <name>\nisobutanol\n\n> <abbreviation>\nisobutanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethanol\n -INDIGO-11302219142D\n\n 2 1 0 0 0 0 0 0 0 0999 V2000\n 0.0709 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5710 0.8536 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 methyl alcohol\nM END\n> <name>\nmethanol\n\n> <abbreviation>\nmethyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-butanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.0709 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5710 0.8536 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.4291 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0709 2.3536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0709 -0.6464 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 t-butanol\nM END\n> <name>\nt-butanol\n\n> <abbreviation>\nt-butanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nwater\n -INDIGO-11302219142D\n\n 1 0 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.9500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 1 1\nM SMT 1 water\nM END\n> <name>\nwater\n\n> <abbreviation>\nwater\n\n> <group>\nSalts and Solvents\n\n$$$$\ncarbon dioxide\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n -1.2000 0.8500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.7000 0.8500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.3000 0.8500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 carbon dioxide\nM END\n> <name>\ncarbon dioxide\n\n> <abbreviation>\ncarbon dioxide\n\n> <group>\nSalts and Solvents\n\n$$$$\nbenzene\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 benzene\nM END\n> <name>\nbenzene\n\n> <abbreviation>\nbenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\ncumene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 4.2989 1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 -2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 2 5 2 0 0 0 0\n 2 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 6 8 2 0 0 0 0\n 7 9 2 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 cumene\nM END\n> <name>\ncumene\n\n> <abbreviation>\ncumene\n\n> <group>\nSalts and Solvents\n\n$$$$\nmesitylene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 1.2991 3.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8971 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 2 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 7 9 2 0 0 0 0\n 2 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 mesitylene\nM END\n> <name>\nmesitylene\n\n> <abbreviation>\nmesitylene\n\n> <group>\nSalts and Solvents\n\n$$$$\ntoluene\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 toluene\nM END\n> <name>\ntoluene\n\n> <abbreviation>\ntoluene\n\n> <group>\nSalts and Solvents\n\n$$$$\nn,n-dimethylaniline\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 4.2989 1.8750 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 -2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 5 1 0 0 0 0\n 1 6 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 3 7 1 0 0 0 0\n 4 8 2 0 0 0 0\n 7 9 2 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 N,N-dimethylaniline\nM END\n> <name>\nn,n-dimethylaniline\n\n> <abbreviation>\nN,N-dimethylaniline\n\n> <group>\nSalts and Solvents\n\n$$$$\npyridine\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 pyridine\nM END\n> <name>\npyridine\n\n> <abbreviation>\npyridine\n\n> <group>\nSalts and Solvents\n\n$$$$\ntriethylamine\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 1.5000 0.0000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2010 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.0980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 3 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 triethylamine\nM END\n> <name>\ntriethylamine\n\n> <abbreviation>\ntriethylamine\n\n> <group>\nSalts and Solvents\n\n$$$$\nacetonitrile\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 3 0 0 0 0\n 1 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 acetonitrile\nM END\n> <name>\nacetonitrile\n\n> <abbreviation>\nacetonitrile\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl acetamide\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.7990 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 1.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0980 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2009 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 dimethyl acetamide\nM END\n> <name>\ndimethyl acetamide\n\n> <abbreviation>\ndimethyl acetamide\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl formamide\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.7990 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 1.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0980 -0.7500 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2009 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 DMF\nM END\n> <name>\ndimethyl formamide\n\n> <abbreviation>\nDMF\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl sulfoxide\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 1.5000 0.0000 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2010 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 1.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 DMSO\nM END\n> <name>\ndimethyl sulfoxide\n\n> <abbreviation>\nDMSO\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethylpropylene urea\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 3.4378 2.0544 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1388 1.3044 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1387 -0.1955 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8397 -0.9455 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4593 -0.1956 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4593 1.3044 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -1.7584 2.0545 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8397 2.0544 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8397 3.5545 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\n 2 8 1 0 0 0 0\n 8 9 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 dimethylpropylene urea\nM END\n> <name>\ndimethylpropylene urea\n\n> <abbreviation>\ndimethylpropylene urea\n\n> <group>\nSalts and Solvents\n\n$$$$\nformamide\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.2485 -6.0342 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5476 -5.2841 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5476 -3.7842 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8467 -6.0341 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 formamide\nM END\n> <name>\nformamide\n\n> <abbreviation>\nformamide\n\n> <group>\nSalts and Solvents\n\n$$$$\nn-methyl-2-pyrrolidone\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7500 3.8100 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.3860 1.8953 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\n 1 6 1 0 0 0 0\n 4 7 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 N-methyl-2-pyrrolidone\nM END\n> <name>\nn-methyl-2-pyrrolidone\n\n> <abbreviation>\nN-methyl-2-pyrrolidone\n\n> <group>\nSalts and Solvents\n\n$$$$\nn-methylformamide\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1009 0.5500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4000 1.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4000 2.8000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6990 0.5500 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1981 1.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 N-methylformamide\nM END\n> <name>\nn-methylformamide\n\n> <abbreviation>\nN-methylformamide\n\n> <group>\nSalts and Solvents\n\n$$$$\npropane nitrile\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 6.8971 0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 4 3 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 propane nitrile\nM END\n> <name>\npropane nitrile\n\n> <abbreviation>\npropane nitrile\n\n> <group>\nSalts and Solvents\n\n$$$$\nsulfolane\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 3.6090 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.0673 3.5678 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\n 1 6 2 0 0 0 0\n 1 7 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 sulfolane\nM END\n> <name>\nsulfolane\n\n> <abbreviation>\nsulfolane\n\n> <group>\nSalts and Solvents\n\n$$$$\namyl acetate\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n 5.8307 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.1297 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5316 -0.3786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8307 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2326 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9335 -0.3785 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.6345 0.3715 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.6646 -0.3785 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.9636 0.3715 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 amyl acetate\nM END\n> <name>\namyl acetate\n\n> <abbreviation>\namyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nbutyl acetate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 7.5466 0.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 8.8456 2.2500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.9486 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6495 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.2476 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3505 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.8456 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.1446 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 5 1 0 0 0 0\n 1 7 1 0 0 0 0\n 2 7 2 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 7 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 butyl acetate\nM END\n> <name>\nbutyl acetate\n\n> <abbreviation>\nbutyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl carbonate\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.5429 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7562 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0552 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 dimethyl carbonate\nM END\n> <name>\ndimethyl carbonate\n\n> <abbreviation>\ndimethyl carbonate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl acetate\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.7079 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7079 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0070 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4089 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.1099 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1891 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 ethyl acetate\nM END\n> <name>\nethyl acetate\n\n> <abbreviation>\nethyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl formate\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 5.8087 -2.6404 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8087 -1.1506 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5094 -3.4018 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2098 -2.6486 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9103 -3.4018 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.1078 -3.3904 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 2 1 2 0 0 0 0\n 3 1 1 0 0 0 0\n 4 3 1 0 0 0 0\n 5 4 1 0 0 0 0\n 1 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 ethyl formate\nM END\n> <name>\nethyl formate\n\n> <abbreviation>\nethyl formate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl lactate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n -0.3480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9509 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2500 1.2991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 3.5491 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1471 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8480 -0.2009 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 ethyl lactate\nM END\n> <name>\nethyl lactate\n\n> <abbreviation>\nethyl lactate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl propionate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n -0.3480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9509 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2500 1.2991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 3.5491 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1471 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 ethyl propionate\nM END\n> <name>\nethyl propionate\n\n> <abbreviation>\nethyl propionate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethylene carbonate\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 1.0323 3.5259 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0323 2.0259 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2458 1.1443 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7823 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2824 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.1813 1.1443 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 2 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 ethylene carbonate\nM END\n> <name>\nethylene carbonate\n\n> <abbreviation>\nethylene carbonate\n\n> <group>\nSalts and Solvents\n\n$$$$\nisobutyl acetate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 4.4399 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4399 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.7390 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 -2.5929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7561 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 isobutyl acetate\nM END\n> <name>\nisobutyl acetate\n\n> <abbreviation>\nisobutyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nisopropyl acetate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 3.1409 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4400 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7561 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 1.1571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 isopropyl acetate\nM END\n> <name>\nisopropyl acetate\n\n> <abbreviation>\nisopropyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl acetate\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.5429 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7562 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 methyl acetate\nM END\n> <name>\nmethyl acetate\n\n> <abbreviation>\nmethyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl formate\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 1.5821 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5821 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8812 -1.0929 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2831 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.0159 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 methyl formate\nM END\n> <name>\nmethyl formate\n\n> <abbreviation>\nmethyl formate\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl lactate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 7.6971 -2.1071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3980 -2.8571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0991 -2.1071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0991 -0.6071 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8000 -2.8571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5009 -2.1071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8000 -4.3571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 methyl lactate\nM END\n> <name>\nmethyl lactate\n\n> <abbreviation>\nmethyl lactate\n\n> <group>\nSalts and Solvents\n\n$$$$\nn-octylacetate\n -INDIGO-11302219142D\n\n 12 11 0 0 0 0 0 0 0 0999 V2000\n 7.7009 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.0000 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.2991 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.5980 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.8971 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.1962 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.4953 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.7942 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 18.0933 4.9462 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 19.3924 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 20.6913 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 19.3924 7.1962 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 1 0 0 0 0\n 10 11 1 0 0 0 0\n 10 12 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 4 9 10 11 12\nM SMT 1 n-octylacetate\nM END\n> <name>\nn-octylacetate\n\n> <abbreviation>\nn-octylacetate\n\n> <group>\nSalts and Solvents\n\n$$$$\npropyl acetate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 6.3403 -0.1607 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6395 2.0893 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7423 -0.1607 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0413 0.5893 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4433 0.5893 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6395 0.5893 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.9385 -0.1607 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 4 1 0 0 0 0\n 1 6 1 0 0 0 0\n 2 6 2 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 propyl acetate\nM END\n> <name>\npropyl acetate\n\n> <abbreviation>\npropyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\npropylene carbonate\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.5661 -1.8745 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5661 -0.3746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.6474 0.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.1839 1.9338 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3160 1.9338 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1978 3.1472 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7797 0.5071 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 5 7 1 0 0 0 0\n 2 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 propylene carbonate\nM END\n> <name>\npropylene carbonate\n\n> <abbreviation>\npropylene carbonate\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-butyl acetate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 6.0125 -7.4927 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.7134 -6.7427 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.7134 -5.2428 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.4144 -7.4928 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1153 -6.7428 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8163 -5.9928 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3653 -8.0418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8653 -5.4437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 5 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 t-butyl acetate\nM END\n> <name>\nt-butyl acetate\n\n> <abbreviation>\nt-butyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-dimethoxyethane\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -0.0857 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2133 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5124 0.1714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3848 -0.5786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8114 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.6838 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 1,2-dimethoxyethane\nM END\n> <name>\n1,2-dimethoxyethane\n\n> <abbreviation>\n1,2-dimethoxyethane\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,4-dioxane\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 3.9490 -2.3000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -5.3000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 2 1 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 1,4-dioxane\nM END\n> <name>\n1,4-dioxane\n\n> <abbreviation>\n1,4-dioxane\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-methyl tetrahydrofuran\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.3860 1.8953 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-methyl tetrahydrofuran\nM END\n> <name>\n2-methyl tetrahydrofuran\n\n> <abbreviation>\n2-methyl tetrahydrofuran\n\n> <group>\nSalts and Solvents\n\n$$$$\nanisole\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 2.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\n 7 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 anisole\nM END\n> <name>\nanisole\n\n> <abbreviation>\nanisole\n\n> <group>\nSalts and Solvents\n\n$$$$\nbutyl carbitol\n -INDIGO-11302219142D\n\n 11 10 0 0 0 0 0 0 0 0999 V2000\n -0.2227 -3.0342 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0742 -3.7829 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3750 -3.0387 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6719 -3.7875 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.9782 -3.0336 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 6.2751 -3.7823 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.5758 -3.0382 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.8728 -3.7870 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 10.1792 -3.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.4761 -3.7817 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.7768 -3.0376 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 1 0 0 0 0\n 10 11 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 3 9 10 11\nM SMT 1 butyl carbitol\nM END\n> <name>\nbutyl carbitol\n\n> <abbreviation>\nbutyl carbitol\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclopentyl methyl ether\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5053 1.7481 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3855 0.7467 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4886 -0.4632 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9950 -0.6239 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 5 4 1 0 0 0 0\n 4 2 1 0 0 0 0\n 2 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 cyclopentyl methyl ether\nM END\n> <name>\ncyclopentyl methyl ether\n\n> <abbreviation>\ncyclopentyl methyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndibutyl ether\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n 5.4509 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.7500 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.0491 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.3480 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.6470 4.6471 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 11.9461 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 13.2452 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.5441 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8432 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 dibutyl ether\nM END\n> <name>\ndibutyl ether\n\n> <abbreviation>\ndibutyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiethyl ether\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 2.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 2.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5019 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.6980 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 2 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 ether\nM END\n> <name>\ndiethyl ether\n\n> <abbreviation>\nether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiethylene glycol\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 7.7875 -1.4835 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.4896 -2.2328 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1892 -1.4790 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8854 -2.2317 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5884 -1.4840 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2906 -2.2333 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 9.0845 -2.2313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 7 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 diethylene glycol\nM END\n> <name>\ndiethylene glycol\n\n> <abbreviation>\ndiethylene glycol\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiglyme\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n -0.0857 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2133 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5124 0.1714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3848 -0.5786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8114 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.6838 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.9828 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -5.2818 0.1714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -6.5809 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 diglyme\nM END\n> <name>\ndiethylene glycol dimethyl ether\n\n> <abbreviation>\ndiglyme\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiisopropyl ether\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 5.5971 2.8500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2980 3.6000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2980 5.1000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9991 2.8500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7000 3.6000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.4009 2.8500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7000 5.1000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 diisopropyl ether\nM END\n> <name>\ndiisopropyl ether\n\n> <abbreviation>\ndiisopropyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl ether\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 4.2989 -0.3750 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5980 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9999 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 dimethyl ether\nM END\n> <name>\ndimethyl ether\n\n> <abbreviation>\ndimethyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiphenyl ether\n -INDIGO-11302219142D\n\n 13 14 0 0 0 0 0 0 0 0999 V2000\n 7.1190 1.0305 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8200 0.2805 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8200 -1.2196 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5210 -1.9696 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2219 -1.2195 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2219 0.2805 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5209 1.0305 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.4181 0.2804 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.7171 1.0304 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.0161 0.2805 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.0161 -1.2194 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.7170 -1.9694 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.4180 -1.2195 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 2 0 0 0 0\n 2 7 1 0 0 0 0\n 1 8 1 0 0 0 0\n 8 9 2 0 0 0 0\n 9 10 1 0 0 0 0\n 10 11 2 0 0 0 0\n 11 12 1 0 0 0 0\n 12 13 2 0 0 0 0\n 8 13 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 5 9 10 11 12 13\nM SMT 1 diphenyl ether\nM END\n> <name>\ndiphenyl ether\n\n> <abbreviation>\ndiphenyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nethoxybenzene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 0.0000 6.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 4.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 3.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 2 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 2 0 0 0 0\n 4 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 ethoxybenzene\nM END\n> <name>\nethoxybenzene\n\n> <abbreviation>\nethoxybenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl t-butyl ether\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5019 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0510 2.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5510 -0.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 2 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 methyl t-butyl ether\nM END\n> <name>\nmethyl t-butyl ether\n\n> <abbreviation>\nmethyl t-butyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-amyl methyl ether\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 6.8972 0.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8482 1.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3482 -1.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1962 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 7 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 3 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 t-amyl methyl ether\nM END\n> <name>\nt-amyl methyl ether\n\n> <abbreviation>\nt-amyl methyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-butylethyl ether\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 2.3688 -7.1130 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0698 -7.8630 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2293 -7.1129 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.5283 -7.8629 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8274 -8.6129 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.2783 -6.5639 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7783 -9.1620 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 4 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 t-butylethyl ether\nM END\n> <name>\nt-butylethyl ether\n\n> <abbreviation>\nt-butylethyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ntetrahydrofuran\n -INDIGO-11302219142D\n\n 5 5 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 THF\nM END\n> <name>\ntetrahydrofuran\n\n> <abbreviation>\nTHF\n\n> <group>\nSalts and Solvents\n\n$$$$\ntriethylene glycol\n -INDIGO-11302219142D\n\n 10 9 0 0 0 0 0 0 0 0999 V2000\n 4.1520 3.8971 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.4509 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.7500 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.0491 4.6471 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 9.3480 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.6471 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.9462 3.8971 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 13.2453 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.5442 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8433 4.6471 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 triethylene glycol\nM END\n> <name>\ntriethylene glycol\n\n> <abbreviation>\ntriethylene glycol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2,4-trichlorobenzene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 2.2506 -3.8983 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9991 -2.5989 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2506 -1.2994 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7485 -1.2994 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -2.5989 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7485 -3.8983 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -5.1978 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9991 0.0000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 6 2 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 3 9 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 8 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 1,2,4-trichlorobenzene\nM END\n> <name>\n1,2,4-trichlorobenzene\n\n> <abbreviation>\n1,2,4-trichlorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-dichlorobenzene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n 0.9558 -0.8403 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4581 -0.8408 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2048 0.4582 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4555 1.7560 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9571 1.7589 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2065 0.4576 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2078 3.0567 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2060 3.0573 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 6 2 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 8 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 1,2-dichlorobenzene\nM END\n> <name>\n1,2-dichlorobenzene\n\n> <abbreviation>\n1,2-dichlorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-dichloroethane\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n -0.2571 0.8286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0419 1.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3409 0.8286 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n -1.5562 1.5786 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 1 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 DCE\nM END\n> <name>\n1,2-dichloroethane\n\n> <abbreviation>\nDCE\n\n> <group>\nSalts and Solvents\n\n$$$$\n2,2,2-trifluoroethanol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.3661 -2.2500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0670 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0670 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0670 1.5000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4330 0.0000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5670 0.0000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 3 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2,2,2-trifluoroethanol\nM END\n> <name>\n2,2,2-trifluoroethanol\n\n> <abbreviation>\n2,2,2-trifluoroethanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2,3,4-trifluorotoluene\n -INDIGO-11302219142D\n\n 10 10 0 0 0 0 0 0 0 0999 V2000\n 4.0898 1.7173 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0899 1.7173 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5899 -0.8808 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0898 -0.8807 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8398 0.4183 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8399 -2.1798 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3399 0.4182 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5898 -0.8807 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3399 -2.1798 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0899 -0.8808 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 5 1 0 0 0 0\n 2 7 1 0 0 0 0\n 3 10 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 4 8 1 0 0 0 0\n 5 7 1 0 0 0 0\n 6 9 2 0 0 0 0\n 7 10 2 0 0 0 0\n 9 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 2,3,4-trifluorotoluene\nM END\n> <name>\n2,3,4-trifluorotoluene\n\n> <abbreviation>\n2,3,4-trifluorotoluene\n\n> <group>\nSalts and Solvents\n\n$$$$\ncarbon tetrachloride\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -1.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6000 0.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6000 0.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 carbon tetrachloride\nM END\n> <name>\ncarbon tetrachloride\n\n> <abbreviation>\ncarbon tetrachloride\n\n> <group>\nSalts and Solvents\n\n$$$$\nchloroacetic acid\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 9.0626 -7.0246 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.0626 -5.5268 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 10.3632 -7.7759 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 6.4658 -7.0246 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.7666 -7.7759 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 1 2 0 0 0 0\n 3 1 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 chloroacetic acid\nM END\n> <name>\nchloroacetic acid\n\n> <abbreviation>\nchloroacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\nchlorobenzene\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 chlorobenzene\nM END\n> <name>\nchlorobenzene\n\n> <abbreviation>\nchlorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\nchloroform\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -1.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6000 0.2500 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6000 0.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 chloroform\nM END\n> <name>\nchloroform\n\n> <abbreviation>\nchloroform\n\n> <group>\nSalts and Solvents\n\n$$$$\ndichloromethane\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8500 1.5490 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 5.3500 1.5490 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 DCM\nM END\n> <name>\ndichloromethane\n\n> <abbreviation>\nDCM\n\n> <group>\nSalts and Solvents\n\n$$$$\nfluorobenzene\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 1.2991 3.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 2 0 0 0 0\n 2 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 fluorobenzene\nM END\n> <name>\nfluorobenzene\n\n> <abbreviation>\nfluorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorocyclic ether\n -INDIGO-11302219142D\n\n 25 25 0 0 0 0 0 0 0 0999 V2000\n -1.9038 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.9038 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4038 -4.5746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.9038 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4038 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4038 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4038 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0962 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0962 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0962 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5962 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5962 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5962 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0962 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9395 -6.0662 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9395 -3.0827 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.3099 -2.4726 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5598 -1.1736 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5233 -1.5909 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3135 -3.5873 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3173 -2.4726 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.5271 -4.4689 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5635 -4.8864 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.7677 -5.7808 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.4224 -6.3797 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 5 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 8 10 1 0 0 0 0\n 8 11 1 0 0 0 0\n 11 12 1 0 0 0 0\n 11 13 1 0 0 0 0\n 11 14 1 0 0 0 0\n 14 15 1 0 0 0 0\n 14 16 1 0 0 0 0\n 16 17 1 0 0 0 0\n 17 18 1 0 0 0 0\n 17 19 1 0 0 0 0\n 17 20 1 0 0 0 0\n 20 21 1 0 0 0 0\n 20 22 1 0 0 0 0\n 20 23 1 0 0 0 0\n 14 23 1 0 0 0 0\n 23 24 1 0 0 0 0\n 23 25 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 8 9 10 11 12 13 14 15 16\nM SAL 1 8 17 18 19 20 21 22 23 24\nM SAL 1 1 25\nM SMT 1 perfluorocyclic ether\nM END\n> <name>\nperfluorocyclic ether\n\n> <abbreviation>\nperfluorocyclic ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorocyclohexane\n -INDIGO-11302219142D\n\n 18 18 0 0 0 0 0 0 0 0999 V2000\n 7.8482 2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5982 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5491 2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0490 2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5982 -0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.8482 -2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7500 2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0490 -2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5491 -2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7500 -2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0982 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.7991 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0982 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5000 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.7991 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5000 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 13 1 0 0 0 0\n 2 13 1 0 0 0 0\n 3 14 1 0 0 0 0\n 4 14 1 0 0 0 0\n 5 15 1 0 0 0 0\n 6 15 1 0 0 0 0\n 7 16 1 0 0 0 0\n 8 16 1 0 0 0 0\n 9 17 1 0 0 0 0\n 10 17 1 0 0 0 0\n 11 18 1 0 0 0 0\n 12 18 1 0 0 0 0\n 13 14 1 0 0 0 0\n 13 15 1 0 0 0 0\n 14 16 1 0 0 0 0\n 15 17 1 0 0 0 0\n 16 18 1 0 0 0 0\n 17 18 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 8 9 10 11 12 13 14 15 16\nM SAL 1 2 17 18\nM SMT 1 perfluorocyclohexane\nM END\n> <name>\nperfluorocyclohexane\n\n> <abbreviation>\nperfluorocyclohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorohexane\n -INDIGO-11302219142D\n\n 20 19 0 0 0 0 0 0 0 0999 V2000\n 6.1472 0.9240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6472 -1.6740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.9463 -0.9240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.4462 1.6740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3482 -2.4240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8482 0.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.7453 2.4240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 10.2453 -0.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0491 -3.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5490 -0.5760 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -2.6250 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 10.0444 3.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 11.5444 0.5760 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 12.0935 2.6250 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8972 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1963 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 -1.1250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.4953 1.1250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2991 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.7944 1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 15 1 0 0 0 0\n 2 15 1 0 0 0 0\n 3 16 1 0 0 0 0\n 4 16 1 0 0 0 0\n 5 17 1 0 0 0 0\n 6 17 1 0 0 0 0\n 7 18 1 0 0 0 0\n 8 18 1 0 0 0 0\n 9 19 1 0 0 0 0\n 10 19 1 0 0 0 0\n 11 19 1 0 0 0 0\n 12 20 1 0 0 0 0\n 13 20 1 0 0 0 0\n 14 20 1 0 0 0 0\n 15 16 1 0 0 0 0\n 15 17 1 0 0 0 0\n 16 18 1 0 0 0 0\n 17 19 1 0 0 0 0\n 18 20 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 8 9 10 11 12 13 14 15 16\nM SAL 1 4 17 18 19 20\nM SMT 1 perfluorohexane\nM END\n> <name>\nperfluorohexane\n\n> <abbreviation>\nperfluorohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorotoluene\n -INDIGO-11302219142D\n\n 15 15 0 0 0 0 0 0 0 0999 V2000\n 3.0000 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1962 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 3.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0982 2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0982 2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1962 -2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 -3.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8972 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8972 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 -2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 10 1 0 0 0 0\n 2 11 1 0 0 0 0\n 3 12 1 0 0 0 0\n 4 12 1 0 0 0 0\n 5 12 1 0 0 0 0\n 6 13 1 0 0 0 0\n 7 14 1 0 0 0 0\n 8 15 1 0 0 0 0\n 9 10 2 0 0 0 0\n 9 11 1 0 0 0 0\n 9 12 1 0 0 0 0\n 10 14 1 0 0 0 0\n 11 13 2 0 0 0 0\n 13 15 1 0 0 0 0\n 14 15 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 7 9 10 11 12 13 14 15\nM SMT 1 perfluorotoluene\nM END\n> <name>\nperfluorotoluene\n\n> <abbreviation>\nperfluorotoluene\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrichloroacetic acid\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 4.3154 -3.6247 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.6336 -2.8642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.6336 -1.3688 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0543 -2.8010 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1051 -4.3218 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 4.3090 -5.1835 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.9579 -3.6120 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2 1 1 0 0 0 0\n 3 2 2 0 0 0 0\n 4 1 1 0 0 0 0\n 5 1 1 0 0 0 0\n 6 1 1 0 0 0 0\n 7 2 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 trichloroacetic acid\nM END\n> <name>\ntrichloroacetic acid\n\n> <abbreviation>\ntrichloroacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrichloroacetonitrile\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 4.5000 0.0000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 1.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 3 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 trichloroacetonitrile\nM END\n> <name>\ntrichloroacetonitrile\n\n> <abbreviation>\ntrichloroacetonitrile\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrifluoroacetic acid\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 1.0500 -4.9991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.3000 -3.7000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0500 -2.4009 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2000 -3.7000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.7000 -3.7000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2000 -2.2000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2000 -5.2000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 4 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 trifluoroacetic acid\nM END\n> <name>\ntrifluoroacetic acid\n\n> <abbreviation>\ntrifluoroacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrifluoromethylbenzene\n -INDIGO-11302219142D\n\n 10 10 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 3.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6000 1.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6000 1.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 7 9 1 0 0 0 0\n 7 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 trifluoromethylbenzene\nM END\n> <name>\ntrifluoromethylbenzene\n\n> <abbreviation>\ntrifluoromethylbenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-methylpentane\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.5471 -1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7520 -0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0509 -1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.3500 -0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -4.6491 -1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.3500 1.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-methylpentane\nM END\n> <name>\n2-methylpentane\n\n> <abbreviation>\n2-methylpentane\n\n> <group>\nSalts and Solvents\n\n$$$$\ncis-decalin\n -INDIGO-11302219142D\n\n 12 13 0 0 1 0 0 0 0 0999 V2000\n 2.6130 -0.7481 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0\n 2.6130 -2.2234 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0\n 1.3195 -3.0026 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3195 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8754 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8754 -2.9714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -0.7481 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1948 -0.7481 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1948 -2.2234 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -2.2234 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5583 0.8018 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6130 -3.6988 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 6 1 0 0 0 0\n 3 10 1 0 0 0 0\n 4 7 1 0 0 0 0\n 5 8 1 0 0 0 0\n 6 9 1 0 0 0 0\n 7 10 1 0 0 0 0\n 8 9 1 0 0 0 0\n 1 11 1 1 0 0 0\n 2 12 1 1 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 4 9 10 11 12\nM SMT 1 cis-decalin\nM END\n> <name>\ncis-decalin\n\n> <abbreviation>\ncis-decalin\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclohexane\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 3.9490 -2.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -5.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 2 1 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 cyclohexane\nM END\n> <name>\ncyclohexane\n\n> <abbreviation>\ncyclohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nisooctane\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 4.6062 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.9052 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.2043 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.8023 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1552 -0.4581 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.6552 -0.4580 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -0.2571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 2 6 1 0 0 0 0\n 2 7 1 0 0 0 0\n 4 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 isooctane\nM END\n> <name>\nisooctane\n\n> <abbreviation>\nisooctane\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethylcyclohexane\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 3.9490 -2.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -5.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -0.8000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 2 1 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 methylcyclohexane\nM END\n> <name>\nmethylcyclohexane\n\n> <abbreviation>\nmethylcyclohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethylcyclopentane\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 4.2136 0.4041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.4271 -0.4776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0001 -0.4776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.9636 -1.9041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.4636 -1.9041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2136 1.9041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 6 1 0 0 0 0\n 2 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 methylcyclopentane\nM END\n> <name>\nmethylcyclopentane\n\n> <abbreviation>\nmethylcyclopentane\n\n> <group>\nSalts and Solvents\n\n$$$$\nheptane\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 4.6062 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.9052 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.2043 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.8023 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.1014 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.4004 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 n-heptane\nM END\n> <name>\nheptane\n\n> <abbreviation>\nn-heptane\n\n> <group>\nSalts and Solvents\n\n$$$$\nhexane\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 4.6062 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.9052 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.2043 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.8023 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.1014 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 n-hexane\nM END\n> <name>\nhexane\n\n> <abbreviation>\nn-hexane\n\n> <group>\nSalts and Solvents\n\n$$$$\npentane\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 2.5624 -4.3230 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1578 -4.3230 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8600 -3.5708 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.4556 -3.5708 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2647 -3.5708 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 3 1 1 0 0 0 0\n 4 2 1 0 0 0 0\n 5 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 pentane\nM END\n> <name>\npentane\n\n> <abbreviation>\npentane\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-pentanone\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -1.5971 -4.2000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2980 -3.4500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0009 -4.2000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3000 -3.4500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5991 -4.2000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3000 -1.9500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-pentanone\nM END\n> <name>\n2-pentanone\n\n> <abbreviation>\n2-pentanone\n\n> <group>\nSalts and Solvents\n\n$$$$\n3-pentanone\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.6558 5.4039 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9548 4.6539 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2538 5.4039 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2539 6.9040 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5530 4.6539 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.8520 5.4039 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 3-pentanone\nM END\n> <name>\n3-pentanone\n\n> <abbreviation>\n3-pentanone\n\n> <group>\nSalts and Solvents\n\n$$$$\nacetone\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 propanone\nM END\n> <name>\nacetone\n\n> <abbreviation>\npropanone\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclohexanone\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -1.8786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 -2.6286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -1.8786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 cyclohexanone\nM END\n> <name>\ncyclohexanone\n\n> <abbreviation>\ncyclohexanone\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclopentanone\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 1.0323 3.5259 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0323 2.0259 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2458 1.1443 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7823 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2824 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.1813 1.1443 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 2 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 cyclopentanone\nM END\n> <name>\ncyclopentanone\n\n> <abbreviation>\ncyclopentanone\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl ethyl ketone\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5409 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 MEK\nM END\n> <name>\nmethyl ethyl ketone\n\n> <abbreviation>\nMEK\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl isobutyl ketone\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5409 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.8399 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5409 1.8714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 methyl isobutyl ketone\nM END\n> <name>\nmethyl isobutyl ketone\n\n> <abbreviation>\nmethyl isobutyl ketone\n\n> <group>\nSalts and Solvents\n\n$$$$\ncarbon disulfide\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 5.7990 0.0000 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7989 0.0000 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 3 2 0 0 0 0\n 2 3 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 carbon disulfide\nM END\n> <name>\ncarbon disulfide\n\n> <abbreviation>\ncarbon disulfide\n\n> <group>\nSalts and Solvents\n\n$$$$\nnitromethane\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 1.5009 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8000 1.5000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0991 0.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8000 3.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 2 0 0 0 0\nM CHG 2 2 1 3 -1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 nitromethane\nM END\n> <name>\nnitromethane\n\n> <abbreviation>\nnitromethane\n\n> <group>\nSalts and Solvents\n\n$$$$\no-xylene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n -2.1500 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 5.9750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.4481 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\n 6 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 o-xylene\nM END\n> <name>\no-xylene\n\n> <abbreviation>\no-xylene\n\n> <group>\nSalts and Solvents\n\n$$$$\nm-xylene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n -2.1500 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 5.9750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.4480 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\n 5 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 m-xylene\nM END\n> <name>\nm-xylene\n\n> <abbreviation>\nm-xylene\n\n> <group>\nSalts and Solvents\n\n$$$$\np-xylene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n -2.1500 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 5.9750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 -0.0250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\n 4 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 p-xylene\nM END\n> <name>\np-xylene\n\n> <abbreviation>\np-xylene\n\n> <group>\nSalts and Solvents\n\n$$$$\nDIPEA\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n -1.5490 7.3145 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -1.5490 8.8145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8481 6.5645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2500 6.5645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -4.1471 7.3145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8481 5.0645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0490 7.3145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2500 5.0645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8481 9.5645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 3 6 1 0 0 0 0\n 4 7 1 0 0 0 0\n 4 8 1 0 0 0 0\n 2 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 DIPEA\nM END\n> <name>\nn,n-diisopropylethylamine\n\n> <abbreviation>\nDIPEA\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,5-diazabicyclo[5.4.0]undec-7-ene\n -INDIGO-11302219142D\n\n 11 12 0 0 0 0 0 0 0 0999 V2000\n 1.6852 -0.3846 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3514 1.0778 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.7286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3515 1.0777 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -1.6852 -0.3847 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -3.1695 -0.6090 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7175 -2.0053 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.7822 -3.1781 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2990 -2.9545 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7500 -1.5574 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7500 -1.5574 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 2 0 0 0 0\n 10 5 1 0 0 0 0\n 10 11 1 0 0 0 0\n 11 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 3 9 10 11\nM SMT 1 DBU\nM END\n> <name>\n1,5-diazabicyclo[5.4.0]undec-7-ene\n\n> <abbreviation>\nDBU\n\n> <group>\nSalts and Solvents\n\n$$$$\nhexamethylphosphoramide\n -INDIGO-11302219142D\n\n 11 10 0 0 0 0 0 0 0 0999 V2000\n 2.3174 -0.9012 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6235 -1.9903 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8900 -0.9145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5935 -3.2519 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5935 -4.7619 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0831 -3.2205 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 6.0654 -4.1562 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1687 -1.9999 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1521 -3.2278 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3934 -4.5570 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0626 -2.3997 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\n 4 9 1 0 0 0 0\n 9 10 1 0 0 0 0\n 9 11 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 3 9 10 11\nM SMT 1 HMPA\nM END\n> <name>\nhexamethylphosphoramide\n\n> <abbreviation>\nHMPA\n\n> <group>\nSalts and Solvents\n\n$$$$\nhexamethylphosphorous triamide\n -INDIGO-11302219142D\n\n 10 9 0 0 0 0 0 0 0 0999 V2000\n 0.0007 0.0004 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3000 0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3000 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6000 0.0000 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9000 0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1992 0.0004 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9000 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6031 -1.5008 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9032 -2.2490 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3053 -2.2531 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 4 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 8 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 HMPT\nM END\n> <name>\nhexamethylphosphorous triamide\n\n> <abbreviation>\nHMPT\n\n> <group>\nSalts and Solvents\n\n$$$$\nheavy water\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 0.0007 0.0004 0.0000 D 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3000 0.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5993 0.0004 0.0000 D 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 D2O\nM END\n> <name>\nheavy water\n\n> <abbreviation>\nD2O\n\n> <group>\nSalts and Solvents\n\n$$$$\nTRIS\n -INDIGO-03312512502D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 16.0940 -10.7437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.9600 -10.2437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.8260 -10.7437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.9600 -9.2437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.9600 -11.2437 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.2280 -10.2437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.6921 -10.2437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.8260 -8.7437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 1 6 1 0 0 0 0\n 3 7 1 0 0 0 0\n 4 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 TRIS\nM SDI 1 4 0.0000 0.0000 0.0000 0.0000\nM SDI 1 4 0.0000 0.0000 0.0000 0.0000\nM END\n> <name>\nTRIS\n\n> <abbreviation>\nTRIS\n\n> <group>\nSalts and Solvents\n\n$$$$\nTRIS HCl\n Ketcher 3312513372D 1 1.00000 0.00000 0\n\n 9 7 0 0 0 0 0 0 0 0999 V2000\n 15.7719 -6.6396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6379 -6.1396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.5040 -6.6396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6379 -5.1396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6379 -7.1396 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 14.9059 -6.1396 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.3700 -6.1396 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.5040 -4.6396 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6716 -7.9479 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 1 0 0 0\n 2 5 1 0 0 0\n 1 6 1 0 0 0\n 3 7 1 0 0 0\n 4 8 1 0 0 0\nM CHG 2 5 1 9 -1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 9 1 2 3 4 5 6 7 8 9\nM SMT 1 TRIS HCl\nM END\n\n> <name>\nTRIS HCl\n\n> <abbreviation>\nTRIS HCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nSodium-chloride\n Ketcher 3312513392D 1 1.00000 0.00000 0\n\n 2 0 0 0 0 0 0 0 0 0999 V2000\n 16.4963 -6.3500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 15.6713 -6.3500 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\nM CHG 2 1 -1 2 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 NaCl\nM END\n\n> <name>\nSodium-chloride\n\n> <abbreviation>\nNaCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nSodium-acetate\n Ketcher 3312513462D 1 1.00000 0.00000 0\n\n 5 3 0 0 0 0 0 0 0 0999 V2000\n 15.0102 -10.7437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8763 -10.2437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.7423 -10.7437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8763 -9.2437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.5182 -10.7687 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 2 0 0 0\nM CHG 2 3 -1 5 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 CH3COONa\nM END\n\n> <name>\nSodium-acetate\n\n> <abbreviation>\nCH3COONa\n\n> <group>\nSalts and Solvents\n\n$$$$\nPotassium-chloride\n Ketcher 3312513542D 1 1.00000 0.00000 0\n\n 2 0 0 0 0 0 0 0 0 0999 V2000\n 16.2390 -13.2275 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 15.4140 -13.2275 0.0000 K 0 0 0 0 0 0 0 0 0 0 0 0\nM CHG 2 1 -1 2 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 KCl\nM END\n\n> <name>\nPotassium-chloride\n\n> <abbreviation>\nKCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nMonopotassium phosphate\n Ketcher 3312513582D 1 1.00000 0.00000 0\n\n 6 4 0 0 0 0 0 0 0 0999 V2000\n 15.0432 -14.6312 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 15.9093 -15.1312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.0432 -13.6312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.1772 -15.1312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.0432 -15.6312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6098 -15.1562 0.0000 K 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 1 3 2 0 0 0\n 1 4 1 0 0 0\n 1 5 1 0 0 0\nM CHG 2 2 -1 6 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 KH2PO4\nM END\n\n> <name>\nMonopotassium phosphate\n\n> <abbreviation>\nKH2PO4\n\n> <group>\nSalts and Solvents\n\n$$$$\nLithium-chloride\n Ketcher 3312514 52D 1 1.00000 0.00000 0\n\n 2 0 0 0 0 0 0 0 0 0999 V2000\n 16.4828 -15.7375 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 15.6578 -15.7375 0.0000 Li 0 0 0 0 0 0 0 0 0 0 0 0\nM CHG 2 1 -1 2 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 LiCl\nM END\n\n> <name>\nLithium-chloride\n\n> <abbreviation>\nLiCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nGuanidine HCl\n Ketcher 3312514 62D 1 1.00000 0.00000 0\n\n 5 3 0 0 0 0 0 0 0 0999 V2000\n 14.8573 -16.3937 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7233 -15.8937 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.5893 -16.3937 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7233 -14.8937 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 17.8653 -16.3937 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 2 0 0 0\nM CHG 2 3 1 5 -1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 GuHCl\nM END\n\n> <name>\nGuanidine HCl\n\n> <abbreviation>\nGuHCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nDisodium phosphate\n Ketcher 3312514 72D 1 1.00000 0.00000 0\n\n 7 4 0 0 0 0 0 0 0 0999 V2000\n 15.7195 -15.6812 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 16.5856 -16.1812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7195 -14.6812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.8535 -16.1812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7195 -16.6812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.2860 -16.2062 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 14.1860 -16.1812 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 1 3 2 0 0 0\n 1 4 1 0 0 0\n 1 5 1 0 0 0\nM CHG 4 2 -1 4 -1 6 1 7 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 Na2HPO4\nM END\n\n> <name>\nDisodium phosphate\n\n> <abbreviation>\nNa2HPO4\n\n> <group>\nSalts and Solvents\n\n$$$$\nDisodium EDTA\n Ketcher 3312514 92D 1 1.00000 0.00000 0\n\n 22 19 0 0 0 0 0 0 0 0999 V2000\n 11.8472 -15.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 12.7132 -15.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 13.5792 -15.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.7132 -14.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.4453 -15.4313 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -15.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.4453 -14.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -13.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -12.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -14.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -15.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.0433 -15.9313 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 17.9094 -15.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.0433 -16.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -17.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -18.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -16.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.7754 -15.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 19.6414 -15.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.7754 -16.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.5052 -16.9313 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 20.4552 -15.4313 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 2 0 0 0\n 3 5 1 0 0 0\n 5 6 1 0 0 0\n 5 7 1 0 0 0\n 7 8 1 0 0 0\n 8 9 2 0 0 0\n 8 10 1 0 0 0\n 6 11 1 0 0 0\n 11 12 1 0 0 0\n 12 13 1 0 0 0\n 12 14 1 0 0 0\n 14 15 1 0 0 0\n 15 16 2 0 0 0\n 15 17 1 0 0 0\n 13 18 1 0 0 0\n 18 19 1 0 0 0\n 18 20 2 0 0 0\nM CHG 4 17 -1 19 -1 21 1 22 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\nM SAL 1 7 16 17 18 19 20 21 22\nM SMT 1 Disodium EDTA\nM END\n\n> <name>\nDisodium EDTA\n\n> <abbreviation>\nDisodium EDTA\n\n> <group>\nSalts and Solvents\n\n$$$$\nAmmonium-sulfate\n Ketcher 3312514102D 1 1.00000 0.00000 0\n\n 7 4 0 0 0 0 0 0 0 0999 V2000\n 15.8979 -15.6813 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 16.7639 -16.1813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8979 -14.6813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.0319 -16.1813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8979 -16.6813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 13.7644 -16.2063 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 17.4894 -16.2063 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 1 3 2 0 0 0\n 1 4 1 0 0 0\n 1 5 2 0 0 0\nM CHG 4 2 -1 4 -1 6 1 7 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 (NH4)2SO4\nM END\n\n> <name>\nAmmonium-sulfate\n\n> <abbreviation>\n(NH4)2SO4\n\n> <group>\nSalts and Solvents\n\n$$$$";
|
|
15123
15123
|
|
|
15124
|
-
function ownKeys$
|
|
15125
|
-
function _objectSpread$
|
|
15124
|
+
function ownKeys$1j(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15125
|
+
function _objectSpread$1j(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1j(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1j(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15126
15126
|
var initialState$1 = {
|
|
15127
15127
|
lib: [],
|
|
15128
15128
|
mode: MODES.FG
|
|
15129
15129
|
};
|
|
15130
15130
|
var saltsAndSolventsReducer = function saltsAndSolventsReducer() {
|
|
15131
15131
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState$1;
|
|
15132
|
-
var
|
|
15133
|
-
|
|
15134
|
-
payload =
|
|
15132
|
+
var action = arguments.length > 1 ? arguments[1] : undefined;
|
|
15133
|
+
var type = action.type,
|
|
15134
|
+
payload = action.payload;
|
|
15135
15135
|
if (type === 'SALTS_AND_SOLVENTS_INIT') {
|
|
15136
|
-
return _objectSpread$
|
|
15136
|
+
return _objectSpread$1j(_objectSpread$1j({}, state), payload);
|
|
15137
15137
|
}
|
|
15138
15138
|
return state;
|
|
15139
15139
|
};
|
|
@@ -15147,7 +15147,7 @@ var initSaltsAndSolvents = function initSaltsAndSolvents(lib) {
|
|
|
15147
15147
|
};
|
|
15148
15148
|
function initSaltsAndSolventsTemplates() {
|
|
15149
15149
|
return function () {
|
|
15150
|
-
var
|
|
15150
|
+
var _ref = _asyncToGenerator__default["default"]( _regeneratorRuntime__default["default"].mark(function _callee(dispatch) {
|
|
15151
15151
|
var saltsAndSolventsProvider, functionalGroupsProvider, sdfSerializer, templates, saltsAndSolvents;
|
|
15152
15152
|
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
15153
15153
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -15156,9 +15156,9 @@ function initSaltsAndSolventsTemplates() {
|
|
|
15156
15156
|
functionalGroupsProvider = ketcherCore.FunctionalGroupsProvider.getInstance();
|
|
15157
15157
|
sdfSerializer = new ketcherCore.SdfSerializer();
|
|
15158
15158
|
templates = sdfSerializer.deserialize(templatesRawData);
|
|
15159
|
-
saltsAndSolvents = templates.reduce(function (acc,
|
|
15160
|
-
var struct =
|
|
15161
|
-
props =
|
|
15159
|
+
saltsAndSolvents = templates.reduce(function (acc, _ref2) {
|
|
15160
|
+
var struct = _ref2.struct,
|
|
15161
|
+
props = _ref2.props;
|
|
15162
15162
|
struct.abbreviation = String(props.abbreviation);
|
|
15163
15163
|
acc.push(struct);
|
|
15164
15164
|
return acc;
|
|
@@ -15176,13 +15176,13 @@ function initSaltsAndSolventsTemplates() {
|
|
|
15176
15176
|
}, _callee);
|
|
15177
15177
|
}));
|
|
15178
15178
|
return function (_x) {
|
|
15179
|
-
return
|
|
15179
|
+
return _ref.apply(this, arguments);
|
|
15180
15180
|
};
|
|
15181
15181
|
}();
|
|
15182
15182
|
}
|
|
15183
15183
|
|
|
15184
|
-
function ownKeys$
|
|
15185
|
-
function _objectSpread$
|
|
15184
|
+
function ownKeys$1i(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15185
|
+
function _objectSpread$1i(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1i(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1i(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15186
15186
|
var initial = {
|
|
15187
15187
|
freqAtoms: [],
|
|
15188
15188
|
currentAtom: 0,
|
|
@@ -15203,7 +15203,7 @@ function updateVisibleTools(visibleTool, activeTool) {
|
|
|
15203
15203
|
var matchesBondGroup = regExp.exec(key);
|
|
15204
15204
|
if (!matchesBondGroup || menuHeight > 700) res[key] = visibleTool[key];
|
|
15205
15205
|
return res;
|
|
15206
|
-
}, _objectSpread$
|
|
15206
|
+
}, _objectSpread$1i({}, activeTool));
|
|
15207
15207
|
}
|
|
15208
15208
|
function initResize() {
|
|
15209
15209
|
return function (dispatch, getState) {
|
|
@@ -15227,41 +15227,41 @@ function toolbarReducer () {
|
|
|
15227
15227
|
case 'ACTION':
|
|
15228
15228
|
{
|
|
15229
15229
|
var visibleTool = toolInMenu(action.action);
|
|
15230
|
-
return visibleTool ? _objectSpread$
|
|
15230
|
+
return visibleTool ? _objectSpread$1i(_objectSpread$1i({}, state), {}, {
|
|
15231
15231
|
opened: null,
|
|
15232
|
-
visibleTools: _objectSpread$
|
|
15233
|
-
}) : _objectSpread$
|
|
15232
|
+
visibleTools: _objectSpread$1i(_objectSpread$1i({}, state.visibleTools), visibleTool)
|
|
15233
|
+
}) : _objectSpread$1i(_objectSpread$1i({}, state), {}, {
|
|
15234
15234
|
opened: null
|
|
15235
15235
|
});
|
|
15236
15236
|
}
|
|
15237
15237
|
case 'ADD_ATOMS':
|
|
15238
15238
|
{
|
|
15239
15239
|
var newState = addFreqAtom(data, state.freqAtoms, state.currentAtom);
|
|
15240
|
-
return _objectSpread$
|
|
15240
|
+
return _objectSpread$1i(_objectSpread$1i({}, state), newState);
|
|
15241
15241
|
}
|
|
15242
15242
|
case 'CLEAR_VISIBLE':
|
|
15243
15243
|
{
|
|
15244
15244
|
var activeTool = toolInMenu(action.data);
|
|
15245
15245
|
var correctTools = updateVisibleTools(state.visibleTools, activeTool);
|
|
15246
|
-
return _objectSpread$
|
|
15246
|
+
return _objectSpread$1i(_objectSpread$1i({}, state), {}, {
|
|
15247
15247
|
opened: null,
|
|
15248
|
-
visibleTools: _objectSpread$
|
|
15248
|
+
visibleTools: _objectSpread$1i({}, correctTools)
|
|
15249
15249
|
});
|
|
15250
15250
|
}
|
|
15251
15251
|
case 'OPENED':
|
|
15252
15252
|
{
|
|
15253
|
-
return data.isSelected && state.opened ? _objectSpread$
|
|
15253
|
+
return data.isSelected && state.opened ? _objectSpread$1i(_objectSpread$1i({}, state), {}, {
|
|
15254
15254
|
opened: null
|
|
15255
|
-
}) : _objectSpread$
|
|
15255
|
+
}) : _objectSpread$1i(_objectSpread$1i({}, state), {}, {
|
|
15256
15256
|
opened: data.menuName
|
|
15257
15257
|
});
|
|
15258
15258
|
}
|
|
15259
15259
|
case 'UPDATE':
|
|
15260
|
-
return _objectSpread$
|
|
15260
|
+
return _objectSpread$1i(_objectSpread$1i({}, state), {}, {
|
|
15261
15261
|
opened: null
|
|
15262
15262
|
});
|
|
15263
15263
|
case 'MODAL_OPEN':
|
|
15264
|
-
return _objectSpread$
|
|
15264
|
+
return _objectSpread$1i(_objectSpread$1i({}, state), {}, {
|
|
15265
15265
|
opened: null
|
|
15266
15266
|
});
|
|
15267
15267
|
default:
|
|
@@ -15304,8 +15304,8 @@ function hiddenAncestor(el, base) {
|
|
|
15304
15304
|
return findEl;
|
|
15305
15305
|
}
|
|
15306
15306
|
|
|
15307
|
-
function ownKeys$
|
|
15308
|
-
function _objectSpread$
|
|
15307
|
+
function ownKeys$1h(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15308
|
+
function _objectSpread$1h(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1h(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1h(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15309
15309
|
var initialState = {
|
|
15310
15310
|
visible: false,
|
|
15311
15311
|
rotateHandlePosition: {
|
|
@@ -15322,15 +15322,45 @@ var updateFloatingTools = function updateFloatingTools(payload) {
|
|
|
15322
15322
|
};
|
|
15323
15323
|
var floatingToolsReducer = function floatingToolsReducer() {
|
|
15324
15324
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
|
|
15325
|
-
var
|
|
15326
|
-
|
|
15327
|
-
payload =
|
|
15325
|
+
var action = arguments.length > 1 ? arguments[1] : undefined;
|
|
15326
|
+
var type = action.type,
|
|
15327
|
+
payload = action.payload;
|
|
15328
15328
|
if (type === 'UPDATE_FLOATING_TOOLS') {
|
|
15329
|
-
return _objectSpread$
|
|
15329
|
+
return _objectSpread$1h(_objectSpread$1h({}, state), payload);
|
|
15330
15330
|
}
|
|
15331
15331
|
return state;
|
|
15332
15332
|
};
|
|
15333
15333
|
|
|
15334
|
+
function ownKeys$1g(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15335
|
+
function _objectSpread$1g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1g(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15336
|
+
var initNotificationsState = {
|
|
15337
|
+
snackbarNotificationText: ''
|
|
15338
|
+
};
|
|
15339
|
+
function showSnackbarNotification(text) {
|
|
15340
|
+
return {
|
|
15341
|
+
type: 'SHOW_SNACKBAR_NOTIFICATION',
|
|
15342
|
+
data: text
|
|
15343
|
+
};
|
|
15344
|
+
}
|
|
15345
|
+
function selectSnackbarNotificationText(state) {
|
|
15346
|
+
return state.notifications.snackbarNotificationText;
|
|
15347
|
+
}
|
|
15348
|
+
function notificationsReducer() {
|
|
15349
|
+
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initNotificationsState;
|
|
15350
|
+
var action = arguments.length > 1 ? arguments[1] : undefined;
|
|
15351
|
+
if (action.type === 'SHOW_SNACKBAR_NOTIFICATION') {
|
|
15352
|
+
return _objectSpread$1g(_objectSpread$1g({}, state), {}, {
|
|
15353
|
+
snackbarNotificationText: action.data
|
|
15354
|
+
});
|
|
15355
|
+
}
|
|
15356
|
+
if (action.type === 'HIDE_SNACKBAR_NOTIFICATION') {
|
|
15357
|
+
return _objectSpread$1g(_objectSpread$1g({}, state), {}, {
|
|
15358
|
+
snackbarNotificationText: ''
|
|
15359
|
+
});
|
|
15360
|
+
}
|
|
15361
|
+
return state;
|
|
15362
|
+
}
|
|
15363
|
+
|
|
15334
15364
|
var _excluded$v = ["type"],
|
|
15335
15365
|
_excluded2$5 = ["buttons", "customButtons"];
|
|
15336
15366
|
function ownKeys$1f(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -15355,7 +15385,8 @@ var shared = redux.combineReducers({
|
|
|
15355
15385
|
functionalGroups: functionalGroupsReducer,
|
|
15356
15386
|
saltsAndSolvents: saltsAndSolventsReducer,
|
|
15357
15387
|
requestsStatuses: requestReducer,
|
|
15358
|
-
floatingTools: floatingToolsReducer
|
|
15388
|
+
floatingTools: floatingToolsReducer,
|
|
15389
|
+
notifications: notificationsReducer
|
|
15359
15390
|
});
|
|
15360
15391
|
function getRootReducer(setEditor) {
|
|
15361
15392
|
return function root(state, action) {
|
|
@@ -15398,7 +15429,8 @@ function createStore (options, server, setEditor) {
|
|
|
15398
15429
|
customButtons: customButtons
|
|
15399
15430
|
}),
|
|
15400
15431
|
server: server || Promise.reject(new Error('Standalone mode!')),
|
|
15401
|
-
templates: initTmplsState
|
|
15432
|
+
templates: initTmplsState,
|
|
15433
|
+
notifications: initNotificationsState
|
|
15402
15434
|
};
|
|
15403
15435
|
var middleware = [reduxThunk.thunk];
|
|
15404
15436
|
var rootReducer = getRootReducer(setEditor);
|
|
@@ -18187,194 +18219,334 @@ var SGroupTool = function () {
|
|
|
18187
18219
|
}
|
|
18188
18220
|
}
|
|
18189
18221
|
}, {
|
|
18190
|
-
key: "
|
|
18191
|
-
value: function
|
|
18192
|
-
|
|
18193
|
-
|
|
18222
|
+
key: "isContractedFunctionalGroupClicked",
|
|
18223
|
+
value: function isContractedFunctionalGroupClicked(ci, functionalGroups) {
|
|
18224
|
+
return (ci === null || ci === void 0 ? void 0 : ci.map) === 'functionalGroups' && functionalGroups.size && ketcherCore.FunctionalGroup.isContractedFunctionalGroup(ci.id, functionalGroups);
|
|
18225
|
+
}
|
|
18226
|
+
}, {
|
|
18227
|
+
key: "processSelectedAtoms",
|
|
18228
|
+
value: function processSelectedAtoms(selected, functionalGroups, struct, molecule, newSelected) {
|
|
18229
|
+
var atomsResult = [];
|
|
18230
|
+
var extraAtoms = false;
|
|
18231
|
+
if (!selected || !functionalGroups.size || !selected.atoms) {
|
|
18232
|
+
return {
|
|
18233
|
+
atomsResult: atomsResult,
|
|
18234
|
+
extraAtoms: extraAtoms
|
|
18235
|
+
};
|
|
18236
|
+
}
|
|
18194
18237
|
var sgroups = struct.sgroups;
|
|
18195
|
-
var
|
|
18196
|
-
|
|
18197
|
-
|
|
18198
|
-
|
|
18199
|
-
|
|
18200
|
-
|
|
18201
|
-
|
|
18238
|
+
var _iterator6 = _createForOfIteratorHelper$f(selected.atoms),
|
|
18239
|
+
_step6;
|
|
18240
|
+
try {
|
|
18241
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
18242
|
+
var _struct$atoms$get3;
|
|
18243
|
+
var atom = _step6.value;
|
|
18244
|
+
var atomId = ketcherCore.FunctionalGroup.atomsInFunctionalGroup(functionalGroups, atom);
|
|
18245
|
+
if (atomId == null) {
|
|
18246
|
+
extraAtoms = true;
|
|
18247
|
+
continue;
|
|
18248
|
+
}
|
|
18249
|
+
var atomFromStruct = (_struct$atoms$get3 = struct.atoms.get(atomId)) === null || _struct$atoms$get3 === void 0 ? void 0 : _struct$atoms$get3.a;
|
|
18250
|
+
if (!atomFromStruct) {
|
|
18251
|
+
continue;
|
|
18252
|
+
}
|
|
18253
|
+
var actualSgroupId = this.getActualSgroupId(atomFromStruct);
|
|
18254
|
+
if (this.isAtomInContractedGroup(atomFromStruct, sgroups, functionalGroups)) {
|
|
18255
|
+
this.addContractedGroupToSelection(atom, actualSgroupId, molecule, struct, newSelected);
|
|
18256
|
+
}
|
|
18257
|
+
atomsResult.push(atomId);
|
|
18258
|
+
}
|
|
18259
|
+
} catch (err) {
|
|
18260
|
+
_iterator6.e(err);
|
|
18261
|
+
} finally {
|
|
18262
|
+
_iterator6.f();
|
|
18263
|
+
}
|
|
18264
|
+
return {
|
|
18265
|
+
atomsResult: atomsResult,
|
|
18266
|
+
extraAtoms: extraAtoms
|
|
18202
18267
|
};
|
|
18268
|
+
}
|
|
18269
|
+
}, {
|
|
18270
|
+
key: "getActualSgroupId",
|
|
18271
|
+
value: function getActualSgroupId(atomFromStruct) {
|
|
18203
18272
|
var actualSgroupId;
|
|
18204
|
-
var
|
|
18205
|
-
|
|
18273
|
+
var _iterator7 = _createForOfIteratorHelper$f(atomFromStruct.sgs.values()),
|
|
18274
|
+
_step7;
|
|
18275
|
+
try {
|
|
18276
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
18277
|
+
var sgId = _step7.value;
|
|
18278
|
+
actualSgroupId = sgId;
|
|
18279
|
+
}
|
|
18280
|
+
} catch (err) {
|
|
18281
|
+
_iterator7.e(err);
|
|
18282
|
+
} finally {
|
|
18283
|
+
_iterator7.f();
|
|
18284
|
+
}
|
|
18285
|
+
return actualSgroupId;
|
|
18286
|
+
}
|
|
18287
|
+
}, {
|
|
18288
|
+
key: "isAtomInContractedGroup",
|
|
18289
|
+
value: function isAtomInContractedGroup(atomFromStruct, sgroups, functionalGroups) {
|
|
18290
|
+
return ketcherCore.FunctionalGroup.isAtomInContractedFunctionalGroup(atomFromStruct, sgroups, functionalGroups) || ketcherCore.SGroup.isAtomInContractedSGroup(atomFromStruct, sgroups);
|
|
18291
|
+
}
|
|
18292
|
+
}, {
|
|
18293
|
+
key: "addContractedGroupToSelection",
|
|
18294
|
+
value: function addContractedGroupToSelection(atom, actualSgroupId, molecule, struct, newSelected) {
|
|
18295
|
+
var _struct$sgroups$get, _struct$sgroups$get2;
|
|
18296
|
+
if (actualSgroupId === undefined) {
|
|
18297
|
+
return;
|
|
18298
|
+
}
|
|
18299
|
+
var sgroupAtoms = ketcherCore.SGroup.getAtoms(molecule, (_struct$sgroups$get = struct.sgroups.get(actualSgroupId)) === null || _struct$sgroups$get === void 0 ? void 0 : _struct$sgroups$get.item);
|
|
18300
|
+
var sgroupBonds = ketcherCore.SGroup.getBonds(molecule, (_struct$sgroups$get2 = struct.sgroups.get(actualSgroupId)) === null || _struct$sgroups$get2 === void 0 ? void 0 : _struct$sgroups$get2.item);
|
|
18301
|
+
if (atom === sgroupAtoms[0]) {
|
|
18302
|
+
var _newSelected$atoms2, _newSelected$bonds2;
|
|
18303
|
+
(_newSelected$atoms2 = newSelected.atoms).push.apply(_newSelected$atoms2, _toConsumableArray__default["default"](sgroupAtoms));
|
|
18304
|
+
(_newSelected$bonds2 = newSelected.bonds).push.apply(_newSelected$bonds2, _toConsumableArray__default["default"](sgroupBonds));
|
|
18305
|
+
}
|
|
18306
|
+
}
|
|
18307
|
+
}, {
|
|
18308
|
+
key: "processSelectedBonds",
|
|
18309
|
+
value: function processSelectedBonds(selected, functionalGroups, molecule, struct) {
|
|
18206
18310
|
var bondsResult = [];
|
|
18207
|
-
var extraBonds;
|
|
18208
|
-
|
|
18209
|
-
|
|
18210
|
-
|
|
18211
|
-
|
|
18212
|
-
|
|
18213
|
-
|
|
18214
|
-
|
|
18215
|
-
|
|
18216
|
-
|
|
18217
|
-
|
|
18218
|
-
|
|
18219
|
-
|
|
18220
|
-
|
|
18221
|
-
|
|
18222
|
-
|
|
18223
|
-
|
|
18224
|
-
|
|
18225
|
-
|
|
18226
|
-
|
|
18227
|
-
|
|
18228
|
-
actualSgroupId = sgId;
|
|
18229
|
-
}
|
|
18230
|
-
} catch (err) {
|
|
18231
|
-
_iterator7.e(err);
|
|
18232
|
-
} finally {
|
|
18233
|
-
_iterator7.f();
|
|
18234
|
-
}
|
|
18235
|
-
}
|
|
18236
|
-
if (atomFromStruct && (ketcherCore.FunctionalGroup.isAtomInContractedFunctionalGroup(atomFromStruct, sgroups, functionalGroups) || ketcherCore.SGroup.isAtomInContractedSGroup(atomFromStruct, sgroups))) {
|
|
18237
|
-
var _struct$sgroups$get, _struct$sgroups$get2, _newSelected$atoms2, _newSelected$bonds2;
|
|
18238
|
-
var sgroupAtoms = actualSgroupId !== undefined && ketcherCore.SGroup.getAtoms(molecule, (_struct$sgroups$get = struct.sgroups.get(actualSgroupId)) === null || _struct$sgroups$get === void 0 ? void 0 : _struct$sgroups$get.item);
|
|
18239
|
-
var sgroupBonds = actualSgroupId !== undefined && ketcherCore.SGroup.getBonds(molecule, (_struct$sgroups$get2 = struct.sgroups.get(actualSgroupId)) === null || _struct$sgroups$get2 === void 0 ? void 0 : _struct$sgroups$get2.item);
|
|
18240
|
-
atom === sgroupAtoms[0] && (_newSelected$atoms2 = newSelected.atoms).push.apply(_newSelected$atoms2, _toConsumableArray__default["default"](sgroupAtoms)) && (_newSelected$bonds2 = newSelected.bonds).push.apply(_newSelected$bonds2, _toConsumableArray__default["default"](sgroupBonds));
|
|
18241
|
-
}
|
|
18242
|
-
if (atomFromStruct) {
|
|
18243
|
-
atomsResult.push(atomId);
|
|
18244
|
-
}
|
|
18311
|
+
var extraBonds = false;
|
|
18312
|
+
if (!selected || !functionalGroups.size || !selected.bonds) {
|
|
18313
|
+
return {
|
|
18314
|
+
bondsResult: bondsResult,
|
|
18315
|
+
extraBonds: extraBonds
|
|
18316
|
+
};
|
|
18317
|
+
}
|
|
18318
|
+
var _iterator8 = _createForOfIteratorHelper$f(selected.bonds),
|
|
18319
|
+
_step8;
|
|
18320
|
+
try {
|
|
18321
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
18322
|
+
var _struct$bonds$get2;
|
|
18323
|
+
var bond = _step8.value;
|
|
18324
|
+
var bondId = ketcherCore.FunctionalGroup.bondsInFunctionalGroup(molecule, functionalGroups, bond);
|
|
18325
|
+
if (bondId === null) {
|
|
18326
|
+
extraBonds = true;
|
|
18327
|
+
continue;
|
|
18328
|
+
}
|
|
18329
|
+
var bondFromStruct = (_struct$bonds$get2 = struct.bonds.get(bondId)) === null || _struct$bonds$get2 === void 0 ? void 0 : _struct$bonds$get2.b;
|
|
18330
|
+
if (bondFromStruct) {
|
|
18331
|
+
bondsResult.push(bondId);
|
|
18245
18332
|
}
|
|
18246
|
-
} catch (err) {
|
|
18247
|
-
_iterator6.e(err);
|
|
18248
|
-
} finally {
|
|
18249
|
-
_iterator6.f();
|
|
18250
18333
|
}
|
|
18334
|
+
} catch (err) {
|
|
18335
|
+
_iterator8.e(err);
|
|
18336
|
+
} finally {
|
|
18337
|
+
_iterator8.f();
|
|
18251
18338
|
}
|
|
18252
|
-
|
|
18253
|
-
|
|
18254
|
-
|
|
18255
|
-
|
|
18256
|
-
|
|
18257
|
-
|
|
18258
|
-
|
|
18259
|
-
|
|
18260
|
-
|
|
18261
|
-
|
|
18262
|
-
|
|
18263
|
-
|
|
18264
|
-
|
|
18265
|
-
|
|
18266
|
-
|
|
18267
|
-
|
|
18268
|
-
|
|
18269
|
-
|
|
18270
|
-
|
|
18271
|
-
|
|
18339
|
+
return {
|
|
18340
|
+
bondsResult: bondsResult,
|
|
18341
|
+
extraBonds: extraBonds
|
|
18342
|
+
};
|
|
18343
|
+
}
|
|
18344
|
+
}, {
|
|
18345
|
+
key: "expandFunctionalGroupSelection",
|
|
18346
|
+
value: function expandFunctionalGroupSelection(atomsResult, bondsResult, functionalGroups, molecule, struct, newSelected) {
|
|
18347
|
+
this.expandAtomsToFunctionalGroups(atomsResult, functionalGroups, molecule, struct, newSelected);
|
|
18348
|
+
this.expandBondsToFunctionalGroups(bondsResult, functionalGroups, molecule, struct, newSelected);
|
|
18349
|
+
}
|
|
18350
|
+
}, {
|
|
18351
|
+
key: "expandAtomsToFunctionalGroups",
|
|
18352
|
+
value: function expandAtomsToFunctionalGroups(atomsResult, functionalGroups, molecule, struct, newSelected) {
|
|
18353
|
+
if (!atomsResult.length) {
|
|
18354
|
+
return;
|
|
18355
|
+
}
|
|
18356
|
+
atomsResult.forEach(function (id) {
|
|
18357
|
+
var _struct$sgroups$get3, _newSelected$atoms3;
|
|
18358
|
+
var fgId = ketcherCore.FunctionalGroup.findFunctionalGroupByAtom(functionalGroups, id);
|
|
18359
|
+
if (fgId === null) {
|
|
18360
|
+
return;
|
|
18361
|
+
}
|
|
18362
|
+
var sgroupAtoms = ketcherCore.SGroup.getAtoms(molecule, (_struct$sgroups$get3 = struct.sgroups.get(fgId)) === null || _struct$sgroups$get3 === void 0 ? void 0 : _struct$sgroups$get3.item);
|
|
18363
|
+
(_newSelected$atoms3 = newSelected.atoms).push.apply(_newSelected$atoms3, _toConsumableArray__default["default"](sgroupAtoms));
|
|
18364
|
+
});
|
|
18365
|
+
}
|
|
18366
|
+
}, {
|
|
18367
|
+
key: "expandBondsToFunctionalGroups",
|
|
18368
|
+
value: function expandBondsToFunctionalGroups(bondsResult, functionalGroups, molecule, struct, newSelected) {
|
|
18369
|
+
if (!bondsResult.length) {
|
|
18370
|
+
return;
|
|
18371
|
+
}
|
|
18372
|
+
bondsResult.forEach(function (id) {
|
|
18373
|
+
var _struct$sgroups$get4, _newSelected$bonds3;
|
|
18374
|
+
var fgId = ketcherCore.FunctionalGroup.findFunctionalGroupByBond(molecule, functionalGroups, id);
|
|
18375
|
+
if (fgId === null) {
|
|
18376
|
+
return;
|
|
18272
18377
|
}
|
|
18378
|
+
var sgroupBonds = ketcherCore.SGroup.getBonds(molecule, (_struct$sgroups$get4 = struct.sgroups.get(fgId)) === null || _struct$sgroups$get4 === void 0 ? void 0 : _struct$sgroups$get4.item);
|
|
18379
|
+
(_newSelected$bonds3 = newSelected.bonds).push.apply(_newSelected$bonds3, _toConsumableArray__default["default"](sgroupBonds));
|
|
18380
|
+
});
|
|
18381
|
+
}
|
|
18382
|
+
}, {
|
|
18383
|
+
key: "collectFunctionalGroupIds",
|
|
18384
|
+
value: function collectFunctionalGroupIds(atomsResult, bondsResult, extraAtoms, extraBonds, functionalGroups, molecule) {
|
|
18385
|
+
if (extraAtoms || extraBonds) {
|
|
18386
|
+
return [];
|
|
18273
18387
|
}
|
|
18274
|
-
|
|
18275
|
-
|
|
18276
|
-
|
|
18388
|
+
var result = [];
|
|
18389
|
+
this.collectFunctionalGroupIdsFromAtoms(atomsResult, functionalGroups, result);
|
|
18390
|
+
this.collectFunctionalGroupIdsFromBonds(bondsResult, functionalGroups, molecule, result);
|
|
18391
|
+
return result;
|
|
18392
|
+
}
|
|
18393
|
+
}, {
|
|
18394
|
+
key: "collectFunctionalGroupIdsFromAtoms",
|
|
18395
|
+
value: function collectFunctionalGroupIdsFromAtoms(atomsResult, functionalGroups, result) {
|
|
18396
|
+
if (!atomsResult || !atomsResult.length) {
|
|
18397
|
+
return;
|
|
18398
|
+
}
|
|
18399
|
+
var _iterator9 = _createForOfIteratorHelper$f(atomsResult),
|
|
18400
|
+
_step9;
|
|
18401
|
+
try {
|
|
18402
|
+
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
18403
|
+
var id = _step9.value;
|
|
18277
18404
|
var fgId = ketcherCore.FunctionalGroup.findFunctionalGroupByAtom(functionalGroups, id);
|
|
18278
|
-
if (fgId
|
|
18279
|
-
|
|
18405
|
+
if (fgId !== null && !result.includes(fgId)) {
|
|
18406
|
+
result.push(fgId);
|
|
18280
18407
|
}
|
|
18281
|
-
|
|
18282
|
-
|
|
18283
|
-
|
|
18408
|
+
}
|
|
18409
|
+
} catch (err) {
|
|
18410
|
+
_iterator9.e(err);
|
|
18411
|
+
} finally {
|
|
18412
|
+
_iterator9.f();
|
|
18413
|
+
}
|
|
18414
|
+
}
|
|
18415
|
+
}, {
|
|
18416
|
+
key: "collectFunctionalGroupIdsFromBonds",
|
|
18417
|
+
value: function collectFunctionalGroupIdsFromBonds(bondsResult, functionalGroups, molecule, result) {
|
|
18418
|
+
if (!bondsResult || !bondsResult.length) {
|
|
18419
|
+
return;
|
|
18284
18420
|
}
|
|
18285
|
-
|
|
18286
|
-
|
|
18287
|
-
|
|
18421
|
+
var _iterator10 = _createForOfIteratorHelper$f(bondsResult),
|
|
18422
|
+
_step10;
|
|
18423
|
+
try {
|
|
18424
|
+
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
|
18425
|
+
var id = _step10.value;
|
|
18288
18426
|
var fgId = ketcherCore.FunctionalGroup.findFunctionalGroupByBond(molecule, functionalGroups, id);
|
|
18289
|
-
if (fgId
|
|
18290
|
-
|
|
18427
|
+
if (fgId !== null && !result.includes(fgId)) {
|
|
18428
|
+
result.push(fgId);
|
|
18291
18429
|
}
|
|
18292
|
-
|
|
18293
|
-
|
|
18294
|
-
|
|
18430
|
+
}
|
|
18431
|
+
} catch (err) {
|
|
18432
|
+
_iterator10.e(err);
|
|
18433
|
+
} finally {
|
|
18434
|
+
_iterator10.f();
|
|
18295
18435
|
}
|
|
18296
|
-
|
|
18297
|
-
|
|
18298
|
-
|
|
18436
|
+
}
|
|
18437
|
+
}, {
|
|
18438
|
+
key: "shouldRemoveSingleFunctionalGroup",
|
|
18439
|
+
value: function shouldRemoveSingleFunctionalGroup(functionalGroupIds) {
|
|
18440
|
+
return functionalGroupIds.length === 1;
|
|
18441
|
+
}
|
|
18442
|
+
}, {
|
|
18443
|
+
key: "determineSelection",
|
|
18444
|
+
value: function determineSelection(event, ci, newSelected, molecule) {
|
|
18445
|
+
if (this.lassoHelper.running(event)) {
|
|
18446
|
+
return this.handleLassoSelection(event, newSelected, molecule);
|
|
18299
18447
|
}
|
|
18300
|
-
|
|
18301
|
-
|
|
18302
|
-
|
|
18303
|
-
|
|
18304
|
-
|
|
18305
|
-
|
|
18306
|
-
|
|
18307
|
-
|
|
18308
|
-
|
|
18309
|
-
|
|
18448
|
+
return this.handleClickSelection(event, ci);
|
|
18449
|
+
}
|
|
18450
|
+
}, {
|
|
18451
|
+
key: "handleLassoSelection",
|
|
18452
|
+
value: function handleLassoSelection(event, newSelected, molecule) {
|
|
18453
|
+
var lassoSelection = this.lassoHelper.end(event);
|
|
18454
|
+
var selection = newSelected.atoms.length > 0 ? selMerge(lassoSelection, newSelected, false) : lassoSelection;
|
|
18455
|
+
var filteredAtomsAndBonds = filterNotPartOfSuperatomWithoutLabel({
|
|
18456
|
+
atoms: selection.atoms,
|
|
18457
|
+
bonds: selection.bonds
|
|
18458
|
+
}, molecule);
|
|
18459
|
+
selection = _objectSpread$15(_objectSpread$15({}, selection), {}, {
|
|
18460
|
+
atoms: filteredAtomsAndBonds.atoms,
|
|
18461
|
+
bonds: filteredAtomsAndBonds.bonds
|
|
18462
|
+
});
|
|
18463
|
+
this.editor.selection(selection);
|
|
18464
|
+
return {
|
|
18465
|
+
id: null,
|
|
18466
|
+
selection: selection
|
|
18467
|
+
};
|
|
18468
|
+
}
|
|
18469
|
+
}, {
|
|
18470
|
+
key: "handleClickSelection",
|
|
18471
|
+
value: function handleClickSelection(event, ci) {
|
|
18472
|
+
if (!ci) {
|
|
18473
|
+
return {
|
|
18474
|
+
id: null,
|
|
18475
|
+
selection: null
|
|
18476
|
+
};
|
|
18477
|
+
}
|
|
18478
|
+
this.editor.hover(this.editor.findItem(event, searchMaps), null, event);
|
|
18479
|
+
if (ci.map === 'atoms') {
|
|
18480
|
+
return {
|
|
18481
|
+
id: null,
|
|
18482
|
+
selection: {
|
|
18483
|
+
atoms: [ci.id]
|
|
18310
18484
|
}
|
|
18311
|
-
}
|
|
18312
|
-
_iterator9.e(err);
|
|
18313
|
-
} finally {
|
|
18314
|
-
_iterator9.f();
|
|
18315
|
-
}
|
|
18485
|
+
};
|
|
18316
18486
|
}
|
|
18317
|
-
if (
|
|
18318
|
-
var
|
|
18319
|
-
|
|
18320
|
-
|
|
18321
|
-
|
|
18322
|
-
|
|
18323
|
-
|
|
18324
|
-
if (_fgId2 !== null && !result.includes(_fgId2)) {
|
|
18325
|
-
result.push(_fgId2);
|
|
18326
|
-
}
|
|
18487
|
+
if (ci.map === 'bonds') {
|
|
18488
|
+
var bond = this.editor.render.ctab.bonds.get(ci.id);
|
|
18489
|
+
return {
|
|
18490
|
+
id: null,
|
|
18491
|
+
selection: {
|
|
18492
|
+
atoms: [bond === null || bond === void 0 ? void 0 : bond.b.begin, bond === null || bond === void 0 ? void 0 : bond.b.end],
|
|
18493
|
+
bonds: [ci.id]
|
|
18327
18494
|
}
|
|
18328
|
-
}
|
|
18329
|
-
|
|
18330
|
-
|
|
18331
|
-
|
|
18332
|
-
|
|
18495
|
+
};
|
|
18496
|
+
}
|
|
18497
|
+
if (ci.map === 'sgroups' || ci.map === 'sgroupData') {
|
|
18498
|
+
return {
|
|
18499
|
+
id: ci.id,
|
|
18500
|
+
selection: null
|
|
18501
|
+
};
|
|
18502
|
+
}
|
|
18503
|
+
return {
|
|
18504
|
+
id: null,
|
|
18505
|
+
selection: null
|
|
18506
|
+
};
|
|
18507
|
+
}
|
|
18508
|
+
}, {
|
|
18509
|
+
key: "shouldOpenDialog",
|
|
18510
|
+
value: function shouldOpenDialog(id, selection) {
|
|
18511
|
+
var _selection$atoms, _selection$bonds;
|
|
18512
|
+
var isAtomsOrBondsSelected = (selection === null || selection === void 0 || (_selection$atoms = selection.atoms) === null || _selection$atoms === void 0 ? void 0 : _selection$atoms.length) || (selection === null || selection === void 0 || (_selection$bonds = selection.bonds) === null || _selection$bonds === void 0 ? void 0 : _selection$bonds.length);
|
|
18513
|
+
return id !== null || isAtomsOrBondsSelected;
|
|
18514
|
+
}
|
|
18515
|
+
}, {
|
|
18516
|
+
key: "mouseup",
|
|
18517
|
+
value: function mouseup(event) {
|
|
18518
|
+
var struct = this.editor.render.ctab;
|
|
18519
|
+
var molecule = struct.molecule;
|
|
18520
|
+
var functionalGroups = molecule.functionalGroups;
|
|
18521
|
+
var ci = this.editor.findItem(event, searchMaps);
|
|
18522
|
+
var selected = this.editor.selection();
|
|
18523
|
+
if (this.isContractedFunctionalGroupClicked(ci, functionalGroups)) {
|
|
18524
|
+
return;
|
|
18333
18525
|
}
|
|
18334
|
-
|
|
18526
|
+
var newSelected = {
|
|
18527
|
+
atoms: [],
|
|
18528
|
+
bonds: []
|
|
18529
|
+
};
|
|
18530
|
+
var _this$processSelected = this.processSelectedAtoms(selected, functionalGroups, struct, molecule, newSelected),
|
|
18531
|
+
atomsResult = _this$processSelected.atomsResult,
|
|
18532
|
+
extraAtoms = _this$processSelected.extraAtoms;
|
|
18533
|
+
var _this$processSelected2 = this.processSelectedBonds(selected, functionalGroups, molecule, struct),
|
|
18534
|
+
bondsResult = _this$processSelected2.bondsResult,
|
|
18535
|
+
extraBonds = _this$processSelected2.extraBonds;
|
|
18536
|
+
this.expandFunctionalGroupSelection(atomsResult, bondsResult, functionalGroups, molecule, struct, newSelected);
|
|
18537
|
+
var functionalGroupIds = this.collectFunctionalGroupIds(atomsResult, bondsResult, extraAtoms, extraBonds, functionalGroups, molecule);
|
|
18538
|
+
if (this.shouldRemoveSingleFunctionalGroup(functionalGroupIds)) {
|
|
18335
18539
|
this.editor.selection(null);
|
|
18336
18540
|
this.lassoHelper.cancel();
|
|
18337
18541
|
this.editor.event.removeFG.dispatch({
|
|
18338
|
-
fgIds:
|
|
18542
|
+
fgIds: functionalGroupIds
|
|
18339
18543
|
});
|
|
18340
18544
|
return;
|
|
18341
18545
|
}
|
|
18342
|
-
var
|
|
18343
|
-
|
|
18344
|
-
|
|
18345
|
-
|
|
18346
|
-
var filteredAtomsAndBonds = filterNotPartOfSuperatomWithoutLabel({
|
|
18347
|
-
atoms: selection.atoms,
|
|
18348
|
-
bonds: selection.bonds
|
|
18349
|
-
}, molecule);
|
|
18350
|
-
selection = _objectSpread$15(_objectSpread$15({}, selection), {}, {
|
|
18351
|
-
atoms: filteredAtomsAndBonds.atoms,
|
|
18352
|
-
bonds: filteredAtomsAndBonds.bonds
|
|
18353
|
-
});
|
|
18354
|
-
this.editor.selection(selection);
|
|
18355
|
-
} else {
|
|
18356
|
-
if (!ci) {
|
|
18357
|
-
return;
|
|
18358
|
-
}
|
|
18359
|
-
this.editor.hover(this.editor.findItem(event, searchMaps), null, event);
|
|
18360
|
-
if (ci.map === 'atoms') {
|
|
18361
|
-
selection = {
|
|
18362
|
-
atoms: [ci.id]
|
|
18363
|
-
};
|
|
18364
|
-
} else if (ci.map === 'bonds') {
|
|
18365
|
-
var _bond = this.editor.render.ctab.bonds.get(ci.id);
|
|
18366
|
-
selection = {
|
|
18367
|
-
atoms: [_bond === null || _bond === void 0 ? void 0 : _bond.b.begin, _bond === null || _bond === void 0 ? void 0 : _bond.b.end],
|
|
18368
|
-
bonds: [ci.id]
|
|
18369
|
-
};
|
|
18370
|
-
} else if (ci.map === 'sgroups' || ci.map === 'sgroupData') {
|
|
18371
|
-
id = ci.id;
|
|
18372
|
-
} else {
|
|
18373
|
-
return;
|
|
18374
|
-
}
|
|
18375
|
-
}
|
|
18376
|
-
var isAtomsOrBondsSelected = ((_selection = selection) === null || _selection === void 0 || (_selection = _selection.atoms) === null || _selection === void 0 ? void 0 : _selection.length) || ((_selection2 = selection) === null || _selection2 === void 0 || (_selection2 = _selection2.bonds) === null || _selection2 === void 0 ? void 0 : _selection2.length);
|
|
18377
|
-
if (id !== null || isAtomsOrBondsSelected) {
|
|
18546
|
+
var _this$determineSelect = this.determineSelection(event, ci, newSelected, molecule),
|
|
18547
|
+
id = _this$determineSelect.id,
|
|
18548
|
+
selection = _this$determineSelect.selection;
|
|
18549
|
+
if (this.shouldOpenDialog(id, selection)) {
|
|
18378
18550
|
this.editor.selection(selection);
|
|
18379
18551
|
SGroupTool.sgroupDialog(this.editor, id);
|
|
18380
18552
|
}
|
|
@@ -18711,7 +18883,10 @@ function customOnChangeHandler(action, handler) {
|
|
|
18711
18883
|
return handler();
|
|
18712
18884
|
}
|
|
18713
18885
|
function handleMicroChanges(action, handler) {
|
|
18714
|
-
action.operations.
|
|
18886
|
+
if (!(action !== null && action !== void 0 && action.operations) || !Array.isArray(action.operations)) {
|
|
18887
|
+
return handler(data);
|
|
18888
|
+
}
|
|
18889
|
+
_toConsumableArray__default["default"](action.operations).reverse().forEach(function (operation) {
|
|
18715
18890
|
var op = operation._inverted;
|
|
18716
18891
|
switch (op.type) {
|
|
18717
18892
|
case ketcherCore.OperationType.ATOM_ADD:
|
|
@@ -21524,9 +21699,11 @@ function findCloseMerge(restruct, selected, options) {
|
|
|
21524
21699
|
});
|
|
21525
21700
|
selected.bonds.forEach(function (bid) {
|
|
21526
21701
|
var bond = struct.bonds.get(bid);
|
|
21527
|
-
|
|
21528
|
-
|
|
21529
|
-
|
|
21702
|
+
if (bond) {
|
|
21703
|
+
pos.bonds.set(bid, ketcherCore.Vec2.lc2(
|
|
21704
|
+
struct.atoms.get(bond.begin).pp, 0.5,
|
|
21705
|
+
struct.atoms.get(bond.end).pp, 0.5));
|
|
21706
|
+
}
|
|
21530
21707
|
});
|
|
21531
21708
|
var result = {
|
|
21532
21709
|
atoms: new Map(),
|
|
@@ -25840,6 +26017,20 @@ var Editor$3 = function () {
|
|
|
25840
26017
|
});
|
|
25841
26018
|
this.render.update(true);
|
|
25842
26019
|
}
|
|
26020
|
+
}, {
|
|
26021
|
+
key: "setRnaComponentAtoms",
|
|
26022
|
+
value: function setRnaComponentAtoms(componentKey, atomIds, bondIds) {
|
|
26023
|
+
var currentState = this.render.monomerCreationState;
|
|
26024
|
+
if (!currentState) return;
|
|
26025
|
+
var rnaComponentAtoms = currentState.rnaComponentAtoms || new Map();
|
|
26026
|
+
rnaComponentAtoms.set(componentKey, {
|
|
26027
|
+
atoms: atomIds,
|
|
26028
|
+
bonds: bondIds
|
|
26029
|
+
});
|
|
26030
|
+
this.render.monomerCreationState = _objectSpread$V(_objectSpread$V({}, currentState), {}, {
|
|
26031
|
+
rnaComponentAtoms: rnaComponentAtoms
|
|
26032
|
+
});
|
|
26033
|
+
}
|
|
25843
26034
|
}, {
|
|
25844
26035
|
key: "isMonomerCreationWizardActive",
|
|
25845
26036
|
get: function get() {
|
|
@@ -26521,18 +26712,244 @@ var Editor$3 = function () {
|
|
|
26521
26712
|
});
|
|
26522
26713
|
return potentialLeavingAtoms;
|
|
26523
26714
|
}
|
|
26715
|
+
}, {
|
|
26716
|
+
key: "getRnaComponentForAtom",
|
|
26717
|
+
value: function getRnaComponentForAtom(atomId) {
|
|
26718
|
+
var _this$monomerCreation;
|
|
26719
|
+
var rnaComponentAtoms = (_this$monomerCreation = this.monomerCreationState) === null || _this$monomerCreation === void 0 ? void 0 : _this$monomerCreation.rnaComponentAtoms;
|
|
26720
|
+
if (!rnaComponentAtoms) {
|
|
26721
|
+
return null;
|
|
26722
|
+
}
|
|
26723
|
+
var _iterator2 = _createForOfIteratorHelper$2(rnaComponentAtoms.entries()),
|
|
26724
|
+
_step2;
|
|
26725
|
+
try {
|
|
26726
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
26727
|
+
var _step2$value = _slicedToArray__default["default"](_step2.value, 2),
|
|
26728
|
+
componentKey = _step2$value[0],
|
|
26729
|
+
componentData = _step2$value[1];
|
|
26730
|
+
if (componentData.atoms.includes(atomId)) {
|
|
26731
|
+
return componentKey;
|
|
26732
|
+
}
|
|
26733
|
+
}
|
|
26734
|
+
} catch (err) {
|
|
26735
|
+
_iterator2.e(err);
|
|
26736
|
+
} finally {
|
|
26737
|
+
_iterator2.f();
|
|
26738
|
+
}
|
|
26739
|
+
return null;
|
|
26740
|
+
}
|
|
26741
|
+
}, {
|
|
26742
|
+
key: "canAssignRnaComponent",
|
|
26743
|
+
value: function canAssignRnaComponent(bond) {
|
|
26744
|
+
var _this$monomerCreation2,
|
|
26745
|
+
_this6 = this;
|
|
26746
|
+
if (!((_this$monomerCreation2 = this.monomerCreationState) !== null && _this$monomerCreation2 !== void 0 && _this$monomerCreation2.rnaComponentAtoms)) {
|
|
26747
|
+
return false;
|
|
26748
|
+
}
|
|
26749
|
+
var beginAtomRnaComponent = this.getRnaComponentForAtom(bond.begin);
|
|
26750
|
+
var endAtomRnaComponent = this.getRnaComponentForAtom(bond.end);
|
|
26751
|
+
if (!beginAtomRnaComponent && !endAtomRnaComponent || beginAtomRnaComponent && endAtomRnaComponent && beginAtomRnaComponent !== endAtomRnaComponent) {
|
|
26752
|
+
return false;
|
|
26753
|
+
}
|
|
26754
|
+
var rnaComponentToAssign = beginAtomRnaComponent || endAtomRnaComponent;
|
|
26755
|
+
var struct = this.struct();
|
|
26756
|
+
var atomIdToStartFrom = beginAtomRnaComponent ? bond.begin : bond.end;
|
|
26757
|
+
var visitedAtomIds = new Set();
|
|
26758
|
+
var atomsToCheck = [atomIdToStartFrom];
|
|
26759
|
+
var hasConnectionToAnotherComponent = false;
|
|
26760
|
+
var hasConnectionToOriginalStructure = false;
|
|
26761
|
+
visitedAtomIds.add(atomIdToStartFrom);
|
|
26762
|
+
var _loop = function _loop() {
|
|
26763
|
+
var currentAtomId = atomsToCheck.pop();
|
|
26764
|
+
var currentAtom = _.isNumber(currentAtomId) ? struct.atoms.get(currentAtomId) : undefined;
|
|
26765
|
+
if (!currentAtom) {
|
|
26766
|
+
return 1;
|
|
26767
|
+
}
|
|
26768
|
+
currentAtom === null || currentAtom === void 0 || currentAtom.neighbors.forEach(function (neighbor) {
|
|
26769
|
+
var halfBond = struct.halfBonds.get(neighbor);
|
|
26770
|
+
if (hasConnectionToAnotherComponent || hasConnectionToOriginalStructure) {
|
|
26771
|
+
return;
|
|
26772
|
+
}
|
|
26773
|
+
if (!halfBond) {
|
|
26774
|
+
ketcherCore.KetcherLogger.warn('Half-bond not found in structure');
|
|
26775
|
+
return;
|
|
26776
|
+
}
|
|
26777
|
+
var neighborAtomId = halfBond.begin === currentAtomId ? halfBond.end : halfBond.begin;
|
|
26778
|
+
if (visitedAtomIds.has(neighborAtomId)) {
|
|
26779
|
+
return;
|
|
26780
|
+
}
|
|
26781
|
+
visitedAtomIds.add(neighborAtomId);
|
|
26782
|
+
var neighborAtomRnaComponent = _this6.getRnaComponentForAtom(neighborAtomId);
|
|
26783
|
+
if (neighborAtomRnaComponent === rnaComponentToAssign) {
|
|
26784
|
+
return;
|
|
26785
|
+
}
|
|
26786
|
+
if (neighborAtomRnaComponent && neighborAtomRnaComponent !== rnaComponentToAssign) {
|
|
26787
|
+
hasConnectionToAnotherComponent = true;
|
|
26788
|
+
return;
|
|
26789
|
+
}
|
|
26790
|
+
var originalAtomId = _this6.selectedToOriginalAtomsIdMap.get(neighborAtomId);
|
|
26791
|
+
if (_.isNumber(originalAtomId) && _this6.originalStruct.atoms.has(originalAtomId)) {
|
|
26792
|
+
hasConnectionToOriginalStructure = true;
|
|
26793
|
+
return;
|
|
26794
|
+
}
|
|
26795
|
+
atomsToCheck.push(neighborAtomId);
|
|
26796
|
+
visitedAtomIds.add(neighborAtomId);
|
|
26797
|
+
});
|
|
26798
|
+
};
|
|
26799
|
+
while (atomsToCheck.length > 0) {
|
|
26800
|
+
if (_loop()) continue;
|
|
26801
|
+
}
|
|
26802
|
+
if (hasConnectionToAnotherComponent || hasConnectionToOriginalStructure) {
|
|
26803
|
+
return false;
|
|
26804
|
+
}
|
|
26805
|
+
return true;
|
|
26806
|
+
}
|
|
26807
|
+
}, {
|
|
26808
|
+
key: "autoAssignAtomToRnaComponent",
|
|
26809
|
+
value: function autoAssignAtomToRnaComponent(bondId) {
|
|
26810
|
+
var _this$monomerCreation3;
|
|
26811
|
+
var rnaComponentAtoms = (_this$monomerCreation3 = this.monomerCreationState) === null || _this$monomerCreation3 === void 0 ? void 0 : _this$monomerCreation3.rnaComponentAtoms;
|
|
26812
|
+
if (!rnaComponentAtoms) {
|
|
26813
|
+
return;
|
|
26814
|
+
}
|
|
26815
|
+
var struct = this.struct();
|
|
26816
|
+
var bond = struct.bonds.get(bondId);
|
|
26817
|
+
if (!bond) {
|
|
26818
|
+
ketcherCore.KetcherLogger.warn('Bond not found in structure');
|
|
26819
|
+
return;
|
|
26820
|
+
}
|
|
26821
|
+
var beginAtomComponent = this.getRnaComponentForAtom(bond.begin);
|
|
26822
|
+
var endAtomComponent = this.getRnaComponentForAtom(bond.end);
|
|
26823
|
+
var componentToMark = beginAtomComponent || endAtomComponent;
|
|
26824
|
+
if (!componentToMark) {
|
|
26825
|
+
return;
|
|
26826
|
+
}
|
|
26827
|
+
var atomsIdsToMark = [];
|
|
26828
|
+
var bondIdsToMark = [];
|
|
26829
|
+
var bondIdsToCheck = [bondId];
|
|
26830
|
+
var visitedBonds = new Set();
|
|
26831
|
+
while (bondIdsToCheck.length > 0) {
|
|
26832
|
+
var currentBondId = bondIdsToCheck.pop();
|
|
26833
|
+
var currentBond = _.isNumber(currentBondId) ? struct.bonds.get(currentBondId) : undefined;
|
|
26834
|
+
if (!_.isNumber(currentBondId) || !currentBond || visitedBonds.has(currentBondId)) {
|
|
26835
|
+
continue;
|
|
26836
|
+
}
|
|
26837
|
+
bondIdsToMark.push(currentBondId);
|
|
26838
|
+
visitedBonds.add(currentBondId);
|
|
26839
|
+
var beginAtom = struct.atoms.get(currentBond.begin);
|
|
26840
|
+
var endAtom = struct.atoms.get(currentBond.end);
|
|
26841
|
+
var beginAtomRnaComponent = this.getRnaComponentForAtom(currentBond.begin);
|
|
26842
|
+
var endAtomRnaComponent = this.getRnaComponentForAtom(currentBond.end);
|
|
26843
|
+
var atomsToContinue = [];
|
|
26844
|
+
if (beginAtom && beginAtomRnaComponent !== componentToMark) {
|
|
26845
|
+
atomsIdsToMark.push(currentBond.begin);
|
|
26846
|
+
atomsToContinue.push(beginAtom);
|
|
26847
|
+
}
|
|
26848
|
+
if (endAtom && endAtomRnaComponent !== componentToMark) {
|
|
26849
|
+
atomsIdsToMark.push(currentBond.end);
|
|
26850
|
+
atomsToContinue.push(endAtom);
|
|
26851
|
+
}
|
|
26852
|
+
atomsToContinue.forEach(function (atom) {
|
|
26853
|
+
atom.neighbors.forEach(function (halfBondId) {
|
|
26854
|
+
var halfBond = struct.halfBonds.get(halfBondId);
|
|
26855
|
+
if (!halfBond) {
|
|
26856
|
+
ketcherCore.KetcherLogger.warn('Half-bond not found in structure');
|
|
26857
|
+
return;
|
|
26858
|
+
}
|
|
26859
|
+
var nextBondId = halfBond.bid;
|
|
26860
|
+
var nextBond = struct.bonds.get(nextBondId);
|
|
26861
|
+
if (!nextBond || bondIdsToCheck.includes(nextBondId)) {
|
|
26862
|
+
ketcherCore.KetcherLogger.warn('Bond not found in structure');
|
|
26863
|
+
return;
|
|
26864
|
+
}
|
|
26865
|
+
bondIdsToCheck.push(nextBondId);
|
|
26866
|
+
});
|
|
26867
|
+
});
|
|
26868
|
+
}
|
|
26869
|
+
this.addAtomsAndBondsToRnaComponent(componentToMark, atomsIdsToMark, bondIdsToMark);
|
|
26870
|
+
}
|
|
26871
|
+
}, {
|
|
26872
|
+
key: "updateRnaComponentStructureState",
|
|
26873
|
+
value: function updateRnaComponentStructureState(componentKey, updatedAtoms, updatedBonds) {
|
|
26874
|
+
var _this$monomerCreation4;
|
|
26875
|
+
(_this$monomerCreation4 = this.monomerCreationState) === null || _this$monomerCreation4 === void 0 || (_this$monomerCreation4 = _this$monomerCreation4.rnaComponentAtoms) === null || _this$monomerCreation4 === void 0 || _this$monomerCreation4.set(componentKey, {
|
|
26876
|
+
atoms: updatedAtoms,
|
|
26877
|
+
bonds: updatedBonds
|
|
26878
|
+
});
|
|
26879
|
+
var eventData = {
|
|
26880
|
+
componentKey: componentKey,
|
|
26881
|
+
atomIds: updatedAtoms,
|
|
26882
|
+
bondIds: updatedBonds
|
|
26883
|
+
};
|
|
26884
|
+
window.dispatchEvent(new CustomEvent(ketcherCore.MonomerCreationComponentStructureUpdateEvent, {
|
|
26885
|
+
detail: eventData
|
|
26886
|
+
}));
|
|
26887
|
+
}
|
|
26888
|
+
}, {
|
|
26889
|
+
key: "addAtomsAndBondsToRnaComponent",
|
|
26890
|
+
value: function addAtomsAndBondsToRnaComponent(componentKey, atomIds, bondIds) {
|
|
26891
|
+
var _this$monomerCreation5;
|
|
26892
|
+
if (!((_this$monomerCreation5 = this.monomerCreationState) !== null && _this$monomerCreation5 !== void 0 && _this$monomerCreation5.rnaComponentAtoms)) {
|
|
26893
|
+
return;
|
|
26894
|
+
}
|
|
26895
|
+
var componentData = this.monomerCreationState.rnaComponentAtoms.get(componentKey);
|
|
26896
|
+
if (!componentData) {
|
|
26897
|
+
return;
|
|
26898
|
+
}
|
|
26899
|
+
var updatedAtoms = _toConsumableArray__default["default"](componentData.atoms);
|
|
26900
|
+
var updatedBonds = _toConsumableArray__default["default"](componentData.bonds);
|
|
26901
|
+
atomIds.forEach(function (atomId) {
|
|
26902
|
+
if (!updatedAtoms.includes(atomId)) {
|
|
26903
|
+
updatedAtoms.push(atomId);
|
|
26904
|
+
}
|
|
26905
|
+
});
|
|
26906
|
+
bondIds.forEach(function (bondId) {
|
|
26907
|
+
if (!updatedBonds.includes(bondId)) {
|
|
26908
|
+
updatedBonds.push(bondId);
|
|
26909
|
+
}
|
|
26910
|
+
});
|
|
26911
|
+
this.updateRnaComponentStructureState(componentKey, updatedAtoms, updatedBonds);
|
|
26912
|
+
}
|
|
26913
|
+
}, {
|
|
26914
|
+
key: "removeAtomsAndBondsFromRnaComponents",
|
|
26915
|
+
value: function removeAtomsAndBondsFromRnaComponents(atomIds, bondIds) {
|
|
26916
|
+
var _this$monomerCreation6;
|
|
26917
|
+
if (!((_this$monomerCreation6 = this.monomerCreationState) !== null && _this$monomerCreation6 !== void 0 && _this$monomerCreation6.rnaComponentAtoms)) {
|
|
26918
|
+
return;
|
|
26919
|
+
}
|
|
26920
|
+
var _iterator3 = _createForOfIteratorHelper$2(this.monomerCreationState.rnaComponentAtoms.entries()),
|
|
26921
|
+
_step3;
|
|
26922
|
+
try {
|
|
26923
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
26924
|
+
var _step3$value = _slicedToArray__default["default"](_step3.value, 2),
|
|
26925
|
+
componentKey = _step3$value[0],
|
|
26926
|
+
componentData = _step3$value[1];
|
|
26927
|
+
var updatedAtoms = componentData.atoms.filter(function (atomId) {
|
|
26928
|
+
return !atomIds.includes(atomId);
|
|
26929
|
+
});
|
|
26930
|
+
var updatedBonds = componentData.bonds.filter(function (bondId) {
|
|
26931
|
+
return !bondIds.includes(bondId);
|
|
26932
|
+
});
|
|
26933
|
+
this.updateRnaComponentStructureState(componentKey, updatedAtoms, updatedBonds);
|
|
26934
|
+
}
|
|
26935
|
+
} catch (err) {
|
|
26936
|
+
_iterator3.e(err);
|
|
26937
|
+
} finally {
|
|
26938
|
+
_iterator3.f();
|
|
26939
|
+
}
|
|
26940
|
+
}
|
|
26524
26941
|
}, {
|
|
26525
26942
|
key: "subscribeToChangeEventInMonomerCreationWizard",
|
|
26526
26943
|
value: function subscribeToChangeEventInMonomerCreationWizard() {
|
|
26527
|
-
var
|
|
26944
|
+
var _this7 = this;
|
|
26528
26945
|
if (this.changeEventSubscriber) {
|
|
26529
26946
|
return;
|
|
26530
26947
|
}
|
|
26531
26948
|
var handleChangeEvent = function handleChangeEvent(data) {
|
|
26532
|
-
if (!
|
|
26949
|
+
if (!_this7.isMonomerCreationWizardActive || data.length === 0) {
|
|
26533
26950
|
return;
|
|
26534
26951
|
}
|
|
26535
|
-
|
|
26952
|
+
_this7.collectChangesForMonomerCreationStateInvalidation(data);
|
|
26536
26953
|
};
|
|
26537
26954
|
this.changeEventSubscriber = this.subscribe('change', handleChangeEvent);
|
|
26538
26955
|
}
|
|
@@ -26553,9 +26970,11 @@ var Editor$3 = function () {
|
|
|
26553
26970
|
var changesMap = new Map();
|
|
26554
26971
|
data.forEach(function (entry) {
|
|
26555
26972
|
switch (entry.operation) {
|
|
26973
|
+
case ketcherCore.OperationType.ATOM_ADD:
|
|
26556
26974
|
case ketcherCore.OperationType.ATOM_DELETE:
|
|
26557
26975
|
case ketcherCore.OperationType.ATOM_ATTR:
|
|
26558
26976
|
case ketcherCore.OperationType.BOND_ADD:
|
|
26977
|
+
case ketcherCore.OperationType.BOND_DELETE:
|
|
26559
26978
|
case ketcherCore.OperationType.BOND_ATTR:
|
|
26560
26979
|
{
|
|
26561
26980
|
if (entry.id !== undefined) {
|
|
@@ -26575,21 +26994,21 @@ var Editor$3 = function () {
|
|
|
26575
26994
|
}, {
|
|
26576
26995
|
key: "invalidateMonomerCreationWizardState",
|
|
26577
26996
|
value: function invalidateMonomerCreationWizardState(changesMap) {
|
|
26578
|
-
var
|
|
26997
|
+
var _this8 = this;
|
|
26579
26998
|
if (!this.monomerCreationState) {
|
|
26580
26999
|
return;
|
|
26581
27000
|
}
|
|
26582
|
-
var
|
|
26583
|
-
|
|
27001
|
+
var _iterator4 = _createForOfIteratorHelper$2(changesMap.entries()),
|
|
27002
|
+
_step4;
|
|
26584
27003
|
try {
|
|
26585
|
-
var
|
|
26586
|
-
var
|
|
26587
|
-
operation =
|
|
26588
|
-
ids =
|
|
27004
|
+
var _loop2 = function _loop2() {
|
|
27005
|
+
var _step4$value = _slicedToArray__default["default"](_step4.value, 2),
|
|
27006
|
+
operation = _step4$value[0],
|
|
27007
|
+
ids = _step4$value[1];
|
|
26589
27008
|
switch (operation) {
|
|
26590
27009
|
case ketcherCore.OperationType.ATOM_DELETE:
|
|
26591
27010
|
{
|
|
26592
|
-
var attachmentPointsToInvalidate = Array.from(
|
|
27011
|
+
var attachmentPointsToInvalidate = Array.from(_this8.monomerCreationState.assignedAttachmentPoints.entries()).filter(function (_ref11) {
|
|
26593
27012
|
var _ref12 = _slicedToArray__default["default"](_ref11, 2),
|
|
26594
27013
|
atomPair = _ref12[1];
|
|
26595
27014
|
return ids.has(atomPair[0]) || ids.has(atomPair[1]);
|
|
@@ -26605,67 +27024,68 @@ var Editor$3 = function () {
|
|
|
26605
27024
|
attachmentAtomId = _atomPair5[0],
|
|
26606
27025
|
leavingAtomId = _atomPair5[1];
|
|
26607
27026
|
if (ids.has(attachmentAtomId)) {
|
|
26608
|
-
var
|
|
26609
|
-
(
|
|
27027
|
+
var _this8$monomerCreatio;
|
|
27028
|
+
(_this8$monomerCreatio = _this8.monomerCreationState) === null || _this8$monomerCreatio === void 0 || _this8$monomerCreatio.assignedAttachmentPoints["delete"](attachmentPointName);
|
|
26610
27029
|
} else if (ids.has(leavingAtomId)) {
|
|
26611
|
-
var potentialLeavingAtoms =
|
|
27030
|
+
var potentialLeavingAtoms = _this8.findPotentialLeavingAtoms(attachmentAtomId);
|
|
26612
27031
|
if (potentialLeavingAtoms.length === 0) {
|
|
26613
|
-
var
|
|
26614
|
-
(
|
|
27032
|
+
var _this8$monomerCreatio2;
|
|
27033
|
+
(_this8$monomerCreatio2 = _this8.monomerCreationState) === null || _this8$monomerCreatio2 === void 0 || _this8$monomerCreatio2.assignedAttachmentPoints["delete"](attachmentPointName);
|
|
26615
27034
|
} else {
|
|
26616
|
-
var
|
|
26617
|
-
var newLeavingAtomId =
|
|
27035
|
+
var _this8$monomerCreatio3;
|
|
27036
|
+
var newLeavingAtomId = _this8.struct().atoms.keyOf(potentialLeavingAtoms[0]);
|
|
26618
27037
|
assert_1(newLeavingAtomId !== null);
|
|
26619
|
-
(
|
|
27038
|
+
(_this8$monomerCreatio3 = _this8.monomerCreationState) === null || _this8$monomerCreatio3 === void 0 || _this8$monomerCreatio3.assignedAttachmentPoints.set(attachmentPointName, [attachmentAtomId, newLeavingAtomId]);
|
|
26620
27039
|
}
|
|
26621
27040
|
}
|
|
26622
27041
|
});
|
|
26623
|
-
var potentialAttachmentPointsToInvalidate = Array.from(
|
|
27042
|
+
var potentialAttachmentPointsToInvalidate = Array.from(_this8.monomerCreationState.potentialAttachmentPoints.entries());
|
|
26624
27043
|
potentialAttachmentPointsToInvalidate.forEach(function (_ref15) {
|
|
26625
27044
|
var _ref16 = _slicedToArray__default["default"](_ref15, 2),
|
|
26626
27045
|
attachmentAtomId = _ref16[0],
|
|
26627
27046
|
leavingAtomIds = _ref16[1];
|
|
26628
27047
|
if (ids.has(attachmentAtomId)) {
|
|
26629
|
-
var
|
|
26630
|
-
(
|
|
27048
|
+
var _this8$monomerCreatio4;
|
|
27049
|
+
(_this8$monomerCreatio4 = _this8.monomerCreationState) === null || _this8$monomerCreatio4 === void 0 || _this8$monomerCreatio4.potentialAttachmentPoints["delete"](attachmentAtomId);
|
|
26631
27050
|
} else {
|
|
26632
27051
|
var updatedLeavingAtomIds = new Set(Array.from(leavingAtomIds).filter(function (id) {
|
|
26633
27052
|
return !ids.has(id);
|
|
26634
27053
|
}));
|
|
26635
27054
|
if (updatedLeavingAtomIds.size === 0) {
|
|
26636
|
-
var
|
|
26637
|
-
(
|
|
27055
|
+
var _this8$monomerCreatio5;
|
|
27056
|
+
(_this8$monomerCreatio5 = _this8.monomerCreationState) === null || _this8$monomerCreatio5 === void 0 || _this8$monomerCreatio5.potentialAttachmentPoints["delete"](attachmentAtomId);
|
|
26638
27057
|
} else {
|
|
26639
|
-
var
|
|
26640
|
-
(
|
|
27058
|
+
var _this8$monomerCreatio6;
|
|
27059
|
+
(_this8$monomerCreatio6 = _this8.monomerCreationState) === null || _this8$monomerCreatio6 === void 0 || _this8$monomerCreatio6.potentialAttachmentPoints.set(attachmentAtomId, updatedLeavingAtomIds);
|
|
26641
27060
|
}
|
|
26642
27061
|
}
|
|
26643
27062
|
});
|
|
27063
|
+
_this8.removeAtomsAndBondsFromRnaComponents([], _toConsumableArray__default["default"](ids.values()));
|
|
26644
27064
|
}
|
|
26645
27065
|
break;
|
|
26646
27066
|
case ketcherCore.OperationType.BOND_ATTR:
|
|
26647
27067
|
{
|
|
26648
|
-
var
|
|
26649
|
-
|
|
27068
|
+
var _iterator5 = _createForOfIteratorHelper$2(ids.values()),
|
|
27069
|
+
_step5;
|
|
26650
27070
|
try {
|
|
26651
|
-
var
|
|
26652
|
-
var id =
|
|
26653
|
-
var bond =
|
|
27071
|
+
var _loop3 = function _loop3() {
|
|
27072
|
+
var id = _step5.value;
|
|
27073
|
+
var bond = _this8.struct().bonds.get(id);
|
|
26654
27074
|
assert_1(bond);
|
|
26655
|
-
var attachmentPointWithBond = Array.from(
|
|
27075
|
+
var attachmentPointWithBond = Array.from(_this8.monomerCreationState.assignedAttachmentPoints.entries()).find(function (_ref17) {
|
|
26656
27076
|
var _ref18 = _slicedToArray__default["default"](_ref17, 2),
|
|
26657
27077
|
atomPair = _ref18[1];
|
|
26658
27078
|
return bond.begin === atomPair[0] && bond.end === atomPair[1] || bond.begin === atomPair[1] && bond.end === atomPair[0];
|
|
26659
27079
|
});
|
|
26660
27080
|
if (attachmentPointWithBond) {
|
|
26661
27081
|
if (!Editor.isBondSuitableForAttachmentPoint(bond)) {
|
|
26662
|
-
|
|
27082
|
+
_this8.monomerCreationState.problematicAttachmentPoints.add(attachmentPointWithBond[0]);
|
|
26663
27083
|
} else {
|
|
26664
|
-
|
|
27084
|
+
_this8.monomerCreationState.problematicAttachmentPoints["delete"](attachmentPointWithBond[0]);
|
|
26665
27085
|
}
|
|
26666
27086
|
}
|
|
26667
27087
|
if (!Editor.isBondSuitableForAttachmentPoint(bond)) {
|
|
26668
|
-
|
|
27088
|
+
_this8.monomerCreationState.potentialAttachmentPoints.forEach(function (leavingAtomIds, attachmentAtomId) {
|
|
26669
27089
|
var updatedLeavingAtomIds = new Set(leavingAtomIds);
|
|
26670
27090
|
var bondFromAttachmentAtom = bond.begin === attachmentAtomId && leavingAtomIds.has(bond.end);
|
|
26671
27091
|
var bondToAttachmentAtom = bond.end === attachmentAtomId && leavingAtomIds.has(bond.begin);
|
|
@@ -26673,35 +27093,35 @@ var Editor$3 = function () {
|
|
|
26673
27093
|
updatedLeavingAtomIds["delete"](bondFromAttachmentAtom ? bond.end : bond.begin);
|
|
26674
27094
|
}
|
|
26675
27095
|
if (updatedLeavingAtomIds.size === 0) {
|
|
26676
|
-
var
|
|
26677
|
-
(
|
|
27096
|
+
var _this8$monomerCreatio7;
|
|
27097
|
+
(_this8$monomerCreatio7 = _this8.monomerCreationState) === null || _this8$monomerCreatio7 === void 0 || _this8$monomerCreatio7.potentialAttachmentPoints["delete"](attachmentAtomId);
|
|
26678
27098
|
} else {
|
|
26679
|
-
var
|
|
26680
|
-
(
|
|
27099
|
+
var _this8$monomerCreatio8;
|
|
27100
|
+
(_this8$monomerCreatio8 = _this8.monomerCreationState) === null || _this8$monomerCreatio8 === void 0 || _this8$monomerCreatio8.potentialAttachmentPoints.set(attachmentAtomId, updatedLeavingAtomIds);
|
|
26681
27101
|
}
|
|
26682
27102
|
});
|
|
26683
27103
|
}
|
|
26684
27104
|
};
|
|
26685
|
-
for (
|
|
26686
|
-
|
|
27105
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
27106
|
+
_loop3();
|
|
26687
27107
|
}
|
|
26688
27108
|
} catch (err) {
|
|
26689
|
-
|
|
27109
|
+
_iterator5.e(err);
|
|
26690
27110
|
} finally {
|
|
26691
|
-
|
|
27111
|
+
_iterator5.f();
|
|
26692
27112
|
}
|
|
26693
27113
|
break;
|
|
26694
27114
|
}
|
|
26695
27115
|
case ketcherCore.OperationType.BOND_ADD:
|
|
26696
27116
|
{
|
|
26697
|
-
var
|
|
26698
|
-
|
|
27117
|
+
var _iterator6 = _createForOfIteratorHelper$2(ids.values()),
|
|
27118
|
+
_step6;
|
|
26699
27119
|
try {
|
|
26700
|
-
var
|
|
26701
|
-
var id =
|
|
26702
|
-
var bond =
|
|
27120
|
+
var _loop4 = function _loop4() {
|
|
27121
|
+
var id = _step6.value;
|
|
27122
|
+
var bond = _this8.struct().bonds.get(id);
|
|
26703
27123
|
assert_1(bond);
|
|
26704
|
-
var attachmentPointWithBondToLeavingAtom = Array.from(
|
|
27124
|
+
var attachmentPointWithBondToLeavingAtom = Array.from(_this8.monomerCreationState.assignedAttachmentPoints.entries()).find(function (_ref19) {
|
|
26705
27125
|
var _ref20 = _slicedToArray__default["default"](_ref19, 2),
|
|
26706
27126
|
_ref20$ = _slicedToArray__default["default"](_ref20[1], 2),
|
|
26707
27127
|
attachmentAtomId = _ref20$[0],
|
|
@@ -26711,55 +27131,72 @@ var Editor$3 = function () {
|
|
|
26711
27131
|
if (attachmentPointWithBondToLeavingAtom) {
|
|
26712
27132
|
var _attachmentPointWithB = _slicedToArray__default["default"](attachmentPointWithBondToLeavingAtom, 1),
|
|
26713
27133
|
attachmentPointName = _attachmentPointWithB[0];
|
|
26714
|
-
|
|
27134
|
+
_this8.monomerCreationState.assignedAttachmentPoints["delete"](attachmentPointName);
|
|
26715
27135
|
}
|
|
26716
27136
|
if (Editor.isBondSuitableForAttachmentPoint(bond)) {
|
|
26717
|
-
if (
|
|
26718
|
-
var leavingAtomIds =
|
|
27137
|
+
if (_this8.monomerCreationState.potentialAttachmentPoints.has(bond.begin)) {
|
|
27138
|
+
var leavingAtomIds = _this8.monomerCreationState.potentialAttachmentPoints.get(bond.begin);
|
|
26719
27139
|
assert_1(leavingAtomIds);
|
|
26720
|
-
var endAtom =
|
|
27140
|
+
var endAtom = _this8.struct().atoms.get(bond.end);
|
|
26721
27141
|
if (endAtom && endAtom.neighbors.length === 1) {
|
|
26722
27142
|
var updatedLeavingAtomIds = new Set(leavingAtomIds);
|
|
26723
27143
|
updatedLeavingAtomIds.add(bond.end);
|
|
26724
|
-
|
|
27144
|
+
_this8.monomerCreationState.potentialAttachmentPoints.set(bond.begin, updatedLeavingAtomIds);
|
|
26725
27145
|
}
|
|
26726
27146
|
}
|
|
26727
|
-
if (
|
|
26728
|
-
var _leavingAtomIds =
|
|
27147
|
+
if (_this8.monomerCreationState.potentialAttachmentPoints.has(bond.end)) {
|
|
27148
|
+
var _leavingAtomIds = _this8.monomerCreationState.potentialAttachmentPoints.get(bond.end);
|
|
26729
27149
|
assert_1(_leavingAtomIds);
|
|
26730
|
-
var beginAtom =
|
|
27150
|
+
var beginAtom = _this8.struct().atoms.get(bond.begin);
|
|
26731
27151
|
if (beginAtom && beginAtom.neighbors.length === 1) {
|
|
26732
27152
|
var _updatedLeavingAtomIds = new Set(_leavingAtomIds);
|
|
26733
27153
|
_updatedLeavingAtomIds.add(bond.begin);
|
|
26734
|
-
|
|
27154
|
+
_this8.monomerCreationState.potentialAttachmentPoints.set(bond.end, _updatedLeavingAtomIds);
|
|
26735
27155
|
}
|
|
26736
27156
|
}
|
|
26737
27157
|
}
|
|
27158
|
+
if (_this8.canAssignRnaComponent(bond)) {
|
|
27159
|
+
_this8.autoAssignAtomToRnaComponent(id);
|
|
27160
|
+
}
|
|
26738
27161
|
};
|
|
26739
|
-
for (
|
|
26740
|
-
|
|
27162
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
27163
|
+
_loop4();
|
|
26741
27164
|
}
|
|
26742
27165
|
} catch (err) {
|
|
26743
|
-
|
|
27166
|
+
_iterator6.e(err);
|
|
26744
27167
|
} finally {
|
|
26745
|
-
|
|
27168
|
+
_iterator6.f();
|
|
26746
27169
|
}
|
|
26747
27170
|
break;
|
|
26748
27171
|
}
|
|
27172
|
+
case ketcherCore.OperationType.BOND_DELETE:
|
|
27173
|
+
{
|
|
27174
|
+
_this8.removeAtomsAndBondsFromRnaComponents([], _toConsumableArray__default["default"](ids.values()));
|
|
27175
|
+
break;
|
|
27176
|
+
}
|
|
26749
27177
|
default:
|
|
26750
27178
|
break;
|
|
26751
27179
|
}
|
|
26752
27180
|
};
|
|
26753
|
-
for (
|
|
26754
|
-
if (
|
|
27181
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
27182
|
+
if (_loop2()) continue;
|
|
26755
27183
|
}
|
|
26756
27184
|
} catch (err) {
|
|
26757
|
-
|
|
27185
|
+
_iterator4.e(err);
|
|
26758
27186
|
} finally {
|
|
26759
|
-
|
|
27187
|
+
_iterator4.f();
|
|
26760
27188
|
}
|
|
26761
27189
|
this.monomerCreationState = _objectSpread$V({}, this.monomerCreationState || {});
|
|
26762
27190
|
}
|
|
27191
|
+
}, {
|
|
27192
|
+
key: "setRnaMonomerCreationMode",
|
|
27193
|
+
value: function setRnaMonomerCreationMode(isActive) {
|
|
27194
|
+
if (!this.monomerCreationState) {
|
|
27195
|
+
ketcherCore.KetcherLogger.warn('Monomer creation state is not initialized');
|
|
27196
|
+
return;
|
|
27197
|
+
}
|
|
27198
|
+
this.monomerCreationState.isRnaPresetMode = isActive;
|
|
27199
|
+
}
|
|
26763
27200
|
}, {
|
|
26764
27201
|
key: "selection",
|
|
26765
27202
|
value: function selection(ci) {
|
|
@@ -26961,7 +27398,20 @@ var Editor$3 = function () {
|
|
|
26961
27398
|
}, {
|
|
26962
27399
|
key: "unsubscribe",
|
|
26963
27400
|
value: function unsubscribe(eventName, subscriber) {
|
|
26964
|
-
|
|
27401
|
+
switch (eventName) {
|
|
27402
|
+
case 'change':
|
|
27403
|
+
{
|
|
27404
|
+
ketcherCore.ketcherProvider.getKetcher(this.ketcherId).changeEvent.remove(subscriber.handler);
|
|
27405
|
+
break;
|
|
27406
|
+
}
|
|
27407
|
+
case 'libraryUpdate':
|
|
27408
|
+
{
|
|
27409
|
+
ketcherCore.ketcherProvider.getKetcher(this.ketcherId).libraryUpdateEvent.remove(subscriber.handler);
|
|
27410
|
+
break;
|
|
27411
|
+
}
|
|
27412
|
+
default:
|
|
27413
|
+
this.event[eventName].remove(subscriber.handler);
|
|
27414
|
+
}
|
|
26965
27415
|
}
|
|
26966
27416
|
}, {
|
|
26967
27417
|
key: "findItem",
|
|
@@ -27097,17 +27547,17 @@ var Editor$3 = function () {
|
|
|
27097
27547
|
return false;
|
|
27098
27548
|
}
|
|
27099
27549
|
var adjacencyList = new Map();
|
|
27100
|
-
var
|
|
27101
|
-
|
|
27550
|
+
var _iterator7 = _createForOfIteratorHelper$2(atomIds),
|
|
27551
|
+
_step7;
|
|
27102
27552
|
try {
|
|
27103
|
-
for (
|
|
27104
|
-
var atomId =
|
|
27553
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
27554
|
+
var atomId = _step7.value;
|
|
27105
27555
|
adjacencyList.set(atomId, []);
|
|
27106
27556
|
}
|
|
27107
27557
|
} catch (err) {
|
|
27108
|
-
|
|
27558
|
+
_iterator7.e(err);
|
|
27109
27559
|
} finally {
|
|
27110
|
-
|
|
27560
|
+
_iterator7.f();
|
|
27111
27561
|
}
|
|
27112
27562
|
bondIds.forEach(function (bondId) {
|
|
27113
27563
|
var bond = struct.bonds.get(bondId);
|
|
@@ -27129,19 +27579,19 @@ var Editor$3 = function () {
|
|
|
27129
27579
|
if (nextAtomId !== undefined && !visited.has(nextAtomId)) {
|
|
27130
27580
|
var _adjacencyList$get3;
|
|
27131
27581
|
visited.add(nextAtomId);
|
|
27132
|
-
var
|
|
27133
|
-
|
|
27582
|
+
var _iterator8 = _createForOfIteratorHelper$2((_adjacencyList$get3 = adjacencyList.get(nextAtomId)) !== null && _adjacencyList$get3 !== void 0 ? _adjacencyList$get3 : []),
|
|
27583
|
+
_step8;
|
|
27134
27584
|
try {
|
|
27135
|
-
for (
|
|
27136
|
-
var neighbor =
|
|
27585
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
27586
|
+
var neighbor = _step8.value;
|
|
27137
27587
|
if (!visited.has(neighbor)) {
|
|
27138
27588
|
queue.push(neighbor);
|
|
27139
27589
|
}
|
|
27140
27590
|
}
|
|
27141
27591
|
} catch (err) {
|
|
27142
|
-
|
|
27592
|
+
_iterator8.e(err);
|
|
27143
27593
|
} finally {
|
|
27144
|
-
|
|
27594
|
+
_iterator8.f();
|
|
27145
27595
|
}
|
|
27146
27596
|
}
|
|
27147
27597
|
}
|
|
@@ -27307,7 +27757,7 @@ function setHover(ci, visible, render) {
|
|
|
27307
27757
|
|
|
27308
27758
|
var classes$F = {"button-common-styles":"StructEditor-module_button-common-styles__3P7PO","scrollbar":"StructEditor-module_scrollbar__SUs-o","spinnerOverlay":"StructEditor-module_spinnerOverlay__5H1IM","canvas":"StructEditor-module_canvas__LLnzh","measureLog":"StructEditor-module_measureLog__B2wuy","visible":"StructEditor-module_visible__3eFNB","intermediateCanvas":"StructEditor-module_intermediateCanvas__fR3ws","enableCursor":"StructEditor-module_enableCursor__Qla0A"};
|
|
27309
27759
|
|
|
27310
|
-
var styles$p = {"button-common-styles":"ContextMenu-module_button-common-styles__pshYr","scrollbar":"ContextMenu-module_scrollbar__fCla5","contextMenu":"ContextMenu-module_contextMenu__oqyL-","icon":"ContextMenu-module_icon__KhXEk","contextMenuText":"ContextMenu-module_contextMenuText__j0O2-","sameGroup":"ContextMenu-module_sameGroup__0DPIX","devider":"ContextMenu-module_devider__-K9Bc"};
|
|
27760
|
+
var styles$p = {"button-common-styles":"ContextMenu-module_button-common-styles__pshYr","scrollbar":"ContextMenu-module_scrollbar__fCla5","contextMenu":"ContextMenu-module_contextMenu__oqyL-","icon":"ContextMenu-module_icon__KhXEk","markAsComponentIcon":"ContextMenu-module_markAsComponentIcon__oBjcI","contextMenuText":"ContextMenu-module_contextMenuText__j0O2-","sameGroup":"ContextMenu-module_sameGroup__0DPIX","devider":"ContextMenu-module_devider__-K9Bc"};
|
|
27311
27761
|
|
|
27312
27762
|
var CONTEXT_MENU_ID;
|
|
27313
27763
|
(function (CONTEXT_MENU_ID) {
|
|
@@ -27477,6 +27927,116 @@ var useDelete$1 = function useDelete() {
|
|
|
27477
27927
|
return handler;
|
|
27478
27928
|
};
|
|
27479
27929
|
|
|
27930
|
+
var MonomerTypeSelectConfig = [{
|
|
27931
|
+
value: ketcherCore.KetMonomerClass.AminoAcid,
|
|
27932
|
+
label: 'Amino acid',
|
|
27933
|
+
iconName: 'peptide'
|
|
27934
|
+
}, {
|
|
27935
|
+
value: ketcherCore.KetMonomerClass.Sugar,
|
|
27936
|
+
label: 'Sugar',
|
|
27937
|
+
iconName: 'sugar'
|
|
27938
|
+
}, {
|
|
27939
|
+
value: ketcherCore.KetMonomerClass.Base,
|
|
27940
|
+
label: 'Base',
|
|
27941
|
+
iconName: 'base'
|
|
27942
|
+
}, {
|
|
27943
|
+
value: ketcherCore.KetMonomerClass.Phosphate,
|
|
27944
|
+
label: 'Phosphate',
|
|
27945
|
+
iconName: 'phosphate'
|
|
27946
|
+
}, {
|
|
27947
|
+
value: ketcherCore.KetMonomerClass.RNA,
|
|
27948
|
+
label: 'Nucleotide (monomer)',
|
|
27949
|
+
iconName: 'nucleotide'
|
|
27950
|
+
}, {
|
|
27951
|
+
value: 'rnaPreset',
|
|
27952
|
+
label: 'Nucleotide (preset)',
|
|
27953
|
+
iconName: 'preset'
|
|
27954
|
+
}, {
|
|
27955
|
+
value: ketcherCore.KetMonomerClass.CHEM,
|
|
27956
|
+
label: 'CHEM',
|
|
27957
|
+
iconName: 'chem'
|
|
27958
|
+
}];
|
|
27959
|
+
var MAX_MODIFICATION_TYPES = 5;
|
|
27960
|
+
var NotificationMessages = {
|
|
27961
|
+
defaultAttachmentPoints: 'Attachment points are set by default with hydrogens as leaving groups.',
|
|
27962
|
+
emptyMandatoryFields: 'Mandatory fields must be filled.',
|
|
27963
|
+
invalidSymbol: 'The monomer code must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
|
|
27964
|
+
symbolExists: 'The code must be unique amongst peptide, RNA, or CHEM monomers.',
|
|
27965
|
+
editingIsNotAllowed: 'Editing of the structure is not allowed.',
|
|
27966
|
+
noAttachmentPoints: 'The monomer must have at least one attachment point.',
|
|
27967
|
+
incorrectAttachmentPointsOrder: 'Attachment point numbers must be in order, but R1 and R2 may be skipped.',
|
|
27968
|
+
creationSuccessful: 'The monomer was successfully added to the library.',
|
|
27969
|
+
creationRNASuccessful: 'The preset was successfully added to the library.',
|
|
27970
|
+
incontinuousStructure: 'All monomers must have a continuous structure.',
|
|
27971
|
+
notUniqueModificationTypes: 'Only one amino acid within a natural analogue can have the same modification type.',
|
|
27972
|
+
modificationTypeExists: 'Only one amino acid within a natural analogue can have the same modification type.',
|
|
27973
|
+
notMinimalViableStructure: 'Minimal monomer structure is two atoms connected via a single bond.',
|
|
27974
|
+
impureStructure: 'Monomer structure cannot contain S-groups, R-groups, special atoms, or any other query properties.',
|
|
27975
|
+
invalidHELMAlias: 'The HELM alias must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
|
|
27976
|
+
notUniqueHELMAlias: 'The HELM alias must be unique amongst peptide or RNA monomers.',
|
|
27977
|
+
invalidRnaPresetStructure: 'Structure of rna preset component contains issues. Please adjust the structure.',
|
|
27978
|
+
notUniquePresetCode: 'The preset code must be unique amongst other presets.',
|
|
27979
|
+
invalidPresetCode: 'The preset code must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).'
|
|
27980
|
+
};
|
|
27981
|
+
var NotificationTypes = {
|
|
27982
|
+
defaultAttachmentPoints: 'info',
|
|
27983
|
+
emptyMandatoryFields: 'error',
|
|
27984
|
+
invalidSymbol: 'error',
|
|
27985
|
+
symbolExists: 'error',
|
|
27986
|
+
editingIsNotAllowed: 'error',
|
|
27987
|
+
noAttachmentPoints: 'error',
|
|
27988
|
+
incorrectAttachmentPointsOrder: 'error',
|
|
27989
|
+
creationSuccessful: 'info',
|
|
27990
|
+
creationRNASuccessful: 'info',
|
|
27991
|
+
incontinuousStructure: 'error',
|
|
27992
|
+
notUniqueModificationTypes: 'error',
|
|
27993
|
+
modificationTypeExists: 'error',
|
|
27994
|
+
notMinimalViableStructure: 'error',
|
|
27995
|
+
impureStructure: 'error',
|
|
27996
|
+
invalidHELMAlias: 'error',
|
|
27997
|
+
notUniqueHELMAlias: 'error',
|
|
27998
|
+
invalidRnaPresetStructure: 'error',
|
|
27999
|
+
notUniquePresetCode: 'error',
|
|
28000
|
+
invalidPresetCode: 'error'
|
|
28001
|
+
};
|
|
28002
|
+
var MonomerCreationExternalNotificationAction = 'MonomerCreationExternalNotification';
|
|
28003
|
+
var MonomerCreationMarkAsComponentAction = 'MonomerCreationMarkAsComponent';
|
|
28004
|
+
|
|
28005
|
+
var useMarkAs = function useMarkAs() {
|
|
28006
|
+
var _useAppContext = useAppContext(),
|
|
28007
|
+
ketcherId = _useAppContext.ketcherId;
|
|
28008
|
+
var handler = React.useCallback(function (componentType) {
|
|
28009
|
+
return function (_params) {
|
|
28010
|
+
window.dispatchEvent(new CustomEvent(MonomerCreationMarkAsComponentAction, {
|
|
28011
|
+
detail: componentType
|
|
28012
|
+
}));
|
|
28013
|
+
};
|
|
28014
|
+
}, []);
|
|
28015
|
+
var isVisible = React.useCallback(function () {
|
|
28016
|
+
var editor = ketcherCore.ketcherProvider.getKetcher(ketcherId).editor;
|
|
28017
|
+
if (!editor.isMonomerCreationWizardActive) {
|
|
28018
|
+
return false;
|
|
28019
|
+
}
|
|
28020
|
+
var monomerCreationState = editor.monomerCreationState;
|
|
28021
|
+
return monomerCreationState === null || monomerCreationState === void 0 ? void 0 : monomerCreationState.isRnaPresetMode;
|
|
28022
|
+
}, [ketcherId]);
|
|
28023
|
+
var isDisabled = React.useCallback(function () {
|
|
28024
|
+
var editor = ketcherCore.ketcherProvider.getKetcher(ketcherId).editor;
|
|
28025
|
+
var selection = editor.selection();
|
|
28026
|
+
var struct = editor.struct();
|
|
28027
|
+
if (!(selection !== null && selection !== void 0 && selection.atoms) || selection.atoms.length === 0) {
|
|
28028
|
+
return true;
|
|
28029
|
+
}
|
|
28030
|
+
var isContinuous = Editor$3.isStructureContinuous(struct, selection);
|
|
28031
|
+
return !isContinuous;
|
|
28032
|
+
}, [ketcherId]);
|
|
28033
|
+
return {
|
|
28034
|
+
handler: handler,
|
|
28035
|
+
isVisible: isVisible,
|
|
28036
|
+
isDisabled: isDisabled
|
|
28037
|
+
};
|
|
28038
|
+
};
|
|
28039
|
+
|
|
27480
28040
|
var classes$E = {"button-common-styles":"ToggleButtonGroup-module_button-common-styles__wU4We","scrollbar":"ToggleButtonGroup-module_scrollbar__lvyIF","button":"ToggleButtonGroup-module_button__5nfNK","selected":"ToggleButtonGroup-module_selected__SAbod"};
|
|
27481
28041
|
|
|
27482
28042
|
var BUTTON_HEIGHT = 28;
|
|
@@ -27840,6 +28400,10 @@ var AtomMenuItems = function AtomMenuItems(props) {
|
|
|
27840
28400
|
handleStereo = _useAtomStereo2[0],
|
|
27841
28401
|
stereoDisabled = _useAtomStereo2[1];
|
|
27842
28402
|
var handleDelete = useDelete$1();
|
|
28403
|
+
var _useMarkAs = useMarkAs(),
|
|
28404
|
+
handleMarkAs = _useMarkAs.handler,
|
|
28405
|
+
markAsIsVisible = _useMarkAs.isVisible,
|
|
28406
|
+
markAsIsDisabled = _useMarkAs.isDisabled;
|
|
27843
28407
|
var _useAppContext = useAppContext(),
|
|
27844
28408
|
ketcherId = _useAppContext.ketcherId;
|
|
27845
28409
|
var ketcher = ketcherCore.ketcherProvider.getKetcher(ketcherId);
|
|
@@ -27909,8 +28473,43 @@ var AtomMenuItems = function AtomMenuItems(props) {
|
|
|
27909
28473
|
}
|
|
27910
28474
|
var editMenuItemTitle = (_props$propsFromTrigg7 = props.propsFromTrigger) !== null && _props$propsFromTrigg7 !== void 0 && _props$propsFromTrigg7.extraItemsSelected ? 'Edit selected atoms...' : 'Edit...';
|
|
27911
28475
|
var disabledForMonomerCreation = editor.isMonomerCreationWizardActive;
|
|
28476
|
+
var showMarkAsMenu = markAsIsVisible();
|
|
28477
|
+
var markAsDisabled = markAsIsDisabled();
|
|
27912
28478
|
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
27913
|
-
children: [
|
|
28479
|
+
children: [showMarkAsMenu && jsxRuntime.jsxs(reactContexify.Submenu, _objectSpread$T(_objectSpread$T({}, props), {}, {
|
|
28480
|
+
"data-testid": "Mark as a...-option",
|
|
28481
|
+
label: "Mark as a...",
|
|
28482
|
+
disabled: markAsDisabled,
|
|
28483
|
+
className: styles$p.subMenu,
|
|
28484
|
+
children: [jsxRuntime.jsxs(reactContexify.Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
|
|
28485
|
+
"data-testid": "Mark as Base-option",
|
|
28486
|
+
onClick: handleMarkAs('base'),
|
|
28487
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
28488
|
+
name: "base",
|
|
28489
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
28490
|
+
}), jsxRuntime.jsx("span", {
|
|
28491
|
+
children: "Base"
|
|
28492
|
+
})]
|
|
28493
|
+
})), jsxRuntime.jsxs(reactContexify.Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
|
|
28494
|
+
"data-testid": "Mark as Sugar-option",
|
|
28495
|
+
onClick: handleMarkAs('sugar'),
|
|
28496
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
28497
|
+
name: "sugar",
|
|
28498
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
28499
|
+
}), jsxRuntime.jsx("span", {
|
|
28500
|
+
children: "Sugar"
|
|
28501
|
+
})]
|
|
28502
|
+
})), jsxRuntime.jsxs(reactContexify.Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
|
|
28503
|
+
"data-testid": "Mark as Phosphate-option",
|
|
28504
|
+
onClick: handleMarkAs('phosphate'),
|
|
28505
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
28506
|
+
name: "phosphate",
|
|
28507
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
28508
|
+
}), jsxRuntime.jsx("span", {
|
|
28509
|
+
children: "Phosphate"
|
|
28510
|
+
})]
|
|
28511
|
+
}))]
|
|
28512
|
+
})), makeAttachmentPointMenuItems && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
27914
28513
|
children: [makeAttachmentPointMenuItems, jsxRuntime.jsx(reactContexify.Separator, {})]
|
|
27915
28514
|
}), jsxRuntime.jsxs(reactContexify.Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
|
|
27916
28515
|
"data-testid": editMenuItemTitle.concat('-option'),
|
|
@@ -28466,6 +29065,10 @@ var SelectionMenuItems = function SelectionMenuItems(props) {
|
|
|
28466
29065
|
_useCreateMonomer2 = _slicedToArray__default["default"](_useCreateMonomer, 2),
|
|
28467
29066
|
handleCreateMonomer = _useCreateMonomer2[0],
|
|
28468
29067
|
createMonomerDisabled = _useCreateMonomer2[1];
|
|
29068
|
+
var _useMarkAs = useMarkAs(),
|
|
29069
|
+
handleMarkAs = _useMarkAs.handler,
|
|
29070
|
+
markAsIsVisible = _useMarkAs.isVisible,
|
|
29071
|
+
markAsIsDisabled = _useMarkAs.isDisabled;
|
|
28469
29072
|
var highlightBondWithColor = function highlightBondWithColor(color) {
|
|
28470
29073
|
var _props$propsFromTrigg, _props$propsFromTrigg2, _props$propsFromTrigg3;
|
|
28471
29074
|
var bondIds = ((_props$propsFromTrigg = props.propsFromTrigger) === null || _props$propsFromTrigg === void 0 ? void 0 : _props$propsFromTrigg.bondIds) || [];
|
|
@@ -28479,8 +29082,43 @@ var SelectionMenuItems = function SelectionMenuItems(props) {
|
|
|
28479
29082
|
});
|
|
28480
29083
|
};
|
|
28481
29084
|
var options = reactRedux.useSelector(optionsSelector);
|
|
29085
|
+
var showMarkAsMenu = markAsIsVisible();
|
|
29086
|
+
var markAsDisabled = markAsIsDisabled();
|
|
28482
29087
|
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
28483
|
-
children: [jsxRuntime.
|
|
29088
|
+
children: [showMarkAsMenu && jsxRuntime.jsxs(reactContexify.Submenu, _objectSpread$P(_objectSpread$P({}, props), {}, {
|
|
29089
|
+
"data-testid": "Mark as a...-option",
|
|
29090
|
+
label: "Mark as a...",
|
|
29091
|
+
disabled: markAsDisabled,
|
|
29092
|
+
className: styles$p.subMenu,
|
|
29093
|
+
children: [jsxRuntime.jsxs(reactContexify.Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
|
|
29094
|
+
"data-testid": "Mark as Base-option",
|
|
29095
|
+
onClick: handleMarkAs('base'),
|
|
29096
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
29097
|
+
name: "base",
|
|
29098
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
29099
|
+
}), jsxRuntime.jsx("span", {
|
|
29100
|
+
children: "Base"
|
|
29101
|
+
})]
|
|
29102
|
+
})), jsxRuntime.jsxs(reactContexify.Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
|
|
29103
|
+
"data-testid": "Mark as Sugar-option",
|
|
29104
|
+
onClick: handleMarkAs('sugar'),
|
|
29105
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
29106
|
+
name: "sugar",
|
|
29107
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
29108
|
+
}), jsxRuntime.jsx("span", {
|
|
29109
|
+
children: "Sugar"
|
|
29110
|
+
})]
|
|
29111
|
+
})), jsxRuntime.jsxs(reactContexify.Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
|
|
29112
|
+
"data-testid": "Mark as Phosphate-option",
|
|
29113
|
+
onClick: handleMarkAs('phosphate'),
|
|
29114
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
29115
|
+
name: "phosphate",
|
|
29116
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
29117
|
+
}), jsxRuntime.jsx("span", {
|
|
29118
|
+
children: "Phosphate"
|
|
29119
|
+
})]
|
|
29120
|
+
}))]
|
|
29121
|
+
})), jsxRuntime.jsx(reactContexify.Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
|
|
28484
29122
|
"data-testid": "Edit selected bonds...-option",
|
|
28485
29123
|
disabled: bondEditDisabled,
|
|
28486
29124
|
onClick: handleBondEdit,
|
|
@@ -30165,78 +30803,6 @@ var AttachmentPointEditPopup = function AttachmentPointEditPopup(_ref) {
|
|
|
30165
30803
|
});
|
|
30166
30804
|
};
|
|
30167
30805
|
|
|
30168
|
-
var MonomerTypeSelectConfig = [{
|
|
30169
|
-
value: ketcherCore.KetMonomerClass.AminoAcid,
|
|
30170
|
-
label: 'Amino acid',
|
|
30171
|
-
iconName: 'peptide'
|
|
30172
|
-
}, {
|
|
30173
|
-
value: ketcherCore.KetMonomerClass.Sugar,
|
|
30174
|
-
label: 'Sugar',
|
|
30175
|
-
iconName: 'sugar'
|
|
30176
|
-
}, {
|
|
30177
|
-
value: ketcherCore.KetMonomerClass.Base,
|
|
30178
|
-
label: 'Base',
|
|
30179
|
-
iconName: 'base'
|
|
30180
|
-
}, {
|
|
30181
|
-
value: ketcherCore.KetMonomerClass.Phosphate,
|
|
30182
|
-
label: 'Phosphate',
|
|
30183
|
-
iconName: 'phosphate'
|
|
30184
|
-
}, {
|
|
30185
|
-
value: ketcherCore.KetMonomerClass.RNA,
|
|
30186
|
-
label: 'Nucleotide (monomer)',
|
|
30187
|
-
iconName: 'nucleotide'
|
|
30188
|
-
}, {
|
|
30189
|
-
value: ketcherCore.KetMonomerClass.CHEM,
|
|
30190
|
-
label: 'CHEM',
|
|
30191
|
-
iconName: 'chem'
|
|
30192
|
-
}, {
|
|
30193
|
-
value: 'rnaPreset',
|
|
30194
|
-
label: 'Nucleotide (preset)',
|
|
30195
|
-
iconName: 'preset'
|
|
30196
|
-
}];
|
|
30197
|
-
var MAX_MODIFICATION_TYPES = 5;
|
|
30198
|
-
var NotificationMessages = {
|
|
30199
|
-
defaultAttachmentPoints: 'Attachment points are set by default with hydrogens as leaving groups.',
|
|
30200
|
-
emptyMandatoryFields: 'Mandatory fields must be filled.',
|
|
30201
|
-
invalidSymbol: 'The monomer code must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
|
|
30202
|
-
symbolExists: 'The code must be unique amongst peptide, RNA, or CHEM monomers.',
|
|
30203
|
-
editingIsNotAllowed: 'Editing of the structure is not allowed.',
|
|
30204
|
-
noAttachmentPoints: 'The monomer must have at least one attachment point.',
|
|
30205
|
-
incorrectAttachmentPointsOrder: 'Attachment point numbers must be in order, but R1 and R2 may be skipped.',
|
|
30206
|
-
creationSuccessful: 'The monomer was successfully added to the library.',
|
|
30207
|
-
incontinuousStructure: 'All monomers must have a continuous structure.',
|
|
30208
|
-
notUniqueModificationTypes: 'Only one amino acid within a natural analogue can have the same modification type.',
|
|
30209
|
-
modificationTypeExists: 'Only one amino acid within a natural analogue can have the same modification type.',
|
|
30210
|
-
notMinimalViableStructure: 'Minimal monomer structure is two atoms connected via a single bond.',
|
|
30211
|
-
impureStructure: 'Monomer structure cannot contain S-groups, R-groups, special atoms, or any other query properties.',
|
|
30212
|
-
invalidHELMAlias: 'The HELM alias must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
|
|
30213
|
-
notUniqueHELMAlias: 'The HELM alias must be unique amongst peptide or RNA monomers.',
|
|
30214
|
-
invalidRnaPresetStructure: 'Structure of rna preset component contains issues. Please adjust the structure.',
|
|
30215
|
-
notUniquePresetCode: 'The preset code must be unique amongst other presets.',
|
|
30216
|
-
invalidPresetCode: 'The preset code must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).'
|
|
30217
|
-
};
|
|
30218
|
-
var NotificationTypes = {
|
|
30219
|
-
defaultAttachmentPoints: 'info',
|
|
30220
|
-
emptyMandatoryFields: 'error',
|
|
30221
|
-
invalidSymbol: 'error',
|
|
30222
|
-
symbolExists: 'error',
|
|
30223
|
-
editingIsNotAllowed: 'error',
|
|
30224
|
-
noAttachmentPoints: 'error',
|
|
30225
|
-
incorrectAttachmentPointsOrder: 'error',
|
|
30226
|
-
creationSuccessful: 'info',
|
|
30227
|
-
incontinuousStructure: 'error',
|
|
30228
|
-
notUniqueModificationTypes: 'error',
|
|
30229
|
-
modificationTypeExists: 'error',
|
|
30230
|
-
notMinimalViableStructure: 'error',
|
|
30231
|
-
impureStructure: 'error',
|
|
30232
|
-
invalidHELMAlias: 'error',
|
|
30233
|
-
notUniqueHELMAlias: 'error',
|
|
30234
|
-
invalidRnaPresetStructure: 'error',
|
|
30235
|
-
notUniquePresetCode: 'error',
|
|
30236
|
-
invalidPresetCode: 'error'
|
|
30237
|
-
};
|
|
30238
|
-
var MonomerCreationExternalNotificationAction = 'MonomerCreationExternalNotification';
|
|
30239
|
-
|
|
30240
30806
|
var MONOMER_VALIDATION_RULES = [{
|
|
30241
30807
|
monomerType: ketcherCore.KetMonomerClass.AminoAcid,
|
|
30242
30808
|
requirements: [{
|
|
@@ -30845,13 +31411,17 @@ var RnaPresetTabs = function RnaPresetTabs(props) {
|
|
|
30845
31411
|
editor: editor
|
|
30846
31412
|
});
|
|
30847
31413
|
};
|
|
30848
|
-
var handleClickCreateComponent = function
|
|
31414
|
+
var handleClickCreateComponent = React.useCallback(function (rnaComponentKey) {
|
|
31415
|
+
var selection = editor.selection();
|
|
31416
|
+
var atomIds = (selection === null || selection === void 0 ? void 0 : selection.atoms) || [];
|
|
31417
|
+
var bondIds = (selection === null || selection === void 0 ? void 0 : selection.bonds) || [];
|
|
30849
31418
|
wizardStateDispatch({
|
|
30850
31419
|
type: 'SetRnaPresetComponentStructure',
|
|
30851
31420
|
rnaComponentKey: rnaComponentKey,
|
|
30852
31421
|
editor: editor
|
|
30853
31422
|
});
|
|
30854
|
-
|
|
31423
|
+
editor.setRnaComponentAtoms(rnaComponentKey, atomIds, bondIds);
|
|
31424
|
+
}, [editor, wizardStateDispatch]);
|
|
30855
31425
|
var currentTabStructure = currentTabState === null || currentTabState === void 0 ? void 0 : currentTabState.structure;
|
|
30856
31426
|
React.useEffect(function () {
|
|
30857
31427
|
if (!currentTabStructure) {
|
|
@@ -30860,6 +31430,24 @@ var RnaPresetTabs = function RnaPresetTabs(props) {
|
|
|
30860
31430
|
applyHighlights(selectedTab, isHighlightEnabled);
|
|
30861
31431
|
editor.selection(null);
|
|
30862
31432
|
}, [applyHighlights, currentTabStructure, editor, isHighlightEnabled, selectedTab]);
|
|
31433
|
+
React.useEffect(function () {
|
|
31434
|
+
return function () {
|
|
31435
|
+
editor === null || editor === void 0 || editor.highlights.clear();
|
|
31436
|
+
};
|
|
31437
|
+
}, [editor === null || editor === void 0 ? void 0 : editor.highlights]);
|
|
31438
|
+
React.useEffect(function () {
|
|
31439
|
+
var handleMarkAsComponent = function handleMarkAsComponent(event) {
|
|
31440
|
+
var componentType = event.detail;
|
|
31441
|
+
var tabIndex = RNA_COMPONENT_KEYS.indexOf(componentType) + 1;
|
|
31442
|
+
handleClickCreateComponent(componentType);
|
|
31443
|
+
setSelectedTab(tabIndex);
|
|
31444
|
+
applyHighlights(selectedTab, isHighlightEnabled);
|
|
31445
|
+
};
|
|
31446
|
+
window.addEventListener(MonomerCreationMarkAsComponentAction, handleMarkAsComponent);
|
|
31447
|
+
return function () {
|
|
31448
|
+
window.removeEventListener(MonomerCreationMarkAsComponentAction, handleMarkAsComponent);
|
|
31449
|
+
};
|
|
31450
|
+
}, [wizardState, handleClickCreateComponent, applyHighlights, selectedTab, isHighlightEnabled]);
|
|
30863
31451
|
var hasErrorInTab = function hasErrorInTab(wizardState) {
|
|
30864
31452
|
return Object.values(wizardState.errors).some(function (errorValue) {
|
|
30865
31453
|
return Boolean(errorValue);
|
|
@@ -31001,6 +31589,18 @@ var initialRnaPresetWizardState = {
|
|
|
31001
31589
|
}
|
|
31002
31590
|
}
|
|
31003
31591
|
};
|
|
31592
|
+
var getComponentSuffix = function getComponentSuffix(componentType) {
|
|
31593
|
+
switch (componentType) {
|
|
31594
|
+
case ketcherCore.KetMonomerClass.Base:
|
|
31595
|
+
return 'B';
|
|
31596
|
+
case ketcherCore.KetMonomerClass.Sugar:
|
|
31597
|
+
return 'S';
|
|
31598
|
+
case ketcherCore.KetMonomerClass.Phosphate:
|
|
31599
|
+
return 'P';
|
|
31600
|
+
default:
|
|
31601
|
+
return '';
|
|
31602
|
+
}
|
|
31603
|
+
};
|
|
31004
31604
|
var wizardReducer = function wizardReducer(state, action) {
|
|
31005
31605
|
switch (action.type) {
|
|
31006
31606
|
case 'SetFieldValue':
|
|
@@ -31102,6 +31702,14 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
|
|
|
31102
31702
|
if (!action.rnaComponentKey) {
|
|
31103
31703
|
return state;
|
|
31104
31704
|
}
|
|
31705
|
+
if (action.type === 'UpdateRnaPresetComponentStructure') {
|
|
31706
|
+
return _objectSpread$G(_objectSpread$G({}, state), {}, _defineProperty__default["default"]({}, action.rnaComponentKey, _objectSpread$G(_objectSpread$G({}, state[action.rnaComponentKey]), {}, {
|
|
31707
|
+
structure: {
|
|
31708
|
+
atoms: action.atomIds,
|
|
31709
|
+
bonds: action.bondIds
|
|
31710
|
+
}
|
|
31711
|
+
})));
|
|
31712
|
+
}
|
|
31105
31713
|
var rnaComponentKey = action.rnaComponentKey,
|
|
31106
31714
|
restAction = _objectWithoutProperties__default["default"](action, _excluded$o);
|
|
31107
31715
|
if (action.type === 'SetNotifications') {
|
|
@@ -31144,7 +31752,7 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
|
|
|
31144
31752
|
_updatedState = _objectSpread$G(_objectSpread$G({}, _updatedState), {}, {
|
|
31145
31753
|
base: _objectSpread$G(_objectSpread$G({}, _updatedState.base), {}, {
|
|
31146
31754
|
values: _objectSpread$G(_objectSpread$G({}, _updatedState.base.values), {}, {
|
|
31147
|
-
symbol: newPresetCode
|
|
31755
|
+
symbol: newPresetCode ? newPresetCode + getComponentSuffix(ketcherCore.KetMonomerClass.Base) : ''
|
|
31148
31756
|
})
|
|
31149
31757
|
})
|
|
31150
31758
|
});
|
|
@@ -31153,7 +31761,7 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
|
|
|
31153
31761
|
_updatedState = _objectSpread$G(_objectSpread$G({}, _updatedState), {}, {
|
|
31154
31762
|
sugar: _objectSpread$G(_objectSpread$G({}, _updatedState.sugar), {}, {
|
|
31155
31763
|
values: _objectSpread$G(_objectSpread$G({}, _updatedState.sugar.values), {}, {
|
|
31156
|
-
symbol: newPresetCode
|
|
31764
|
+
symbol: newPresetCode ? newPresetCode + getComponentSuffix(ketcherCore.KetMonomerClass.Sugar) : ''
|
|
31157
31765
|
})
|
|
31158
31766
|
})
|
|
31159
31767
|
});
|
|
@@ -31162,7 +31770,7 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
|
|
|
31162
31770
|
_updatedState = _objectSpread$G(_objectSpread$G({}, _updatedState), {}, {
|
|
31163
31771
|
phosphate: _objectSpread$G(_objectSpread$G({}, _updatedState.phosphate), {}, {
|
|
31164
31772
|
values: _objectSpread$G(_objectSpread$G({}, _updatedState.phosphate.values), {}, {
|
|
31165
|
-
symbol: newPresetCode
|
|
31773
|
+
symbol: newPresetCode ? newPresetCode + getComponentSuffix(ketcherCore.KetMonomerClass.Phosphate) : ''
|
|
31166
31774
|
})
|
|
31167
31775
|
})
|
|
31168
31776
|
});
|
|
@@ -31184,18 +31792,6 @@ var hasAllMandatoryPropertiesFilled = function hasAllMandatoryPropertiesFilled(v
|
|
|
31184
31792
|
}
|
|
31185
31793
|
return true;
|
|
31186
31794
|
};
|
|
31187
|
-
var getComponentSuffix = function getComponentSuffix(componentType) {
|
|
31188
|
-
switch (componentType) {
|
|
31189
|
-
case ketcherCore.KetMonomerClass.Base:
|
|
31190
|
-
return 'B';
|
|
31191
|
-
case ketcherCore.KetMonomerClass.Sugar:
|
|
31192
|
-
return 'S';
|
|
31193
|
-
case ketcherCore.KetMonomerClass.Phosphate:
|
|
31194
|
-
return 'P';
|
|
31195
|
-
default:
|
|
31196
|
-
return '';
|
|
31197
|
-
}
|
|
31198
|
-
};
|
|
31199
31795
|
var getLeavingAtomForAttachmentPoint = function getLeavingAtomForAttachmentPoint(componentType, attachmentPointName) {
|
|
31200
31796
|
switch (componentType) {
|
|
31201
31797
|
case ketcherCore.KetMonomerClass.Base:
|
|
@@ -31432,6 +32028,14 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
31432
32028
|
_useState6 = _slicedToArray__default["default"](_useState5, 2),
|
|
31433
32029
|
leavingGroupDialogMessage = _useState6[0],
|
|
31434
32030
|
setLeavingGroupDialogMessage = _useState6[1];
|
|
32031
|
+
var _useState7 = React.useState(null),
|
|
32032
|
+
_useState8 = _slicedToArray__default["default"](_useState7, 2),
|
|
32033
|
+
pendingType = _useState8[0],
|
|
32034
|
+
setPendingType = _useState8[1];
|
|
32035
|
+
var _useState9 = React.useState(false),
|
|
32036
|
+
_useState10 = _slicedToArray__default["default"](_useState9, 2),
|
|
32037
|
+
showTypeChangeDialog = _useState10[0],
|
|
32038
|
+
setShowTypeChangeDialog = _useState10[1];
|
|
31435
32039
|
var isRnaPresetType = type === 'rnaPreset';
|
|
31436
32040
|
var notifications = isRnaPresetType ? new Map([].concat(_toConsumableArray__default["default"](rnaPresetWizardState.preset.notifications || []), _toConsumableArray__default["default"](rnaPresetWizardState.sugar.notifications || []), _toConsumableArray__default["default"](rnaPresetWizardState.base.notifications || []), _toConsumableArray__default["default"](rnaPresetWizardState.phosphate.notifications || []))) : monomerWizardNotifications;
|
|
31437
32041
|
React.useEffect(function () {
|
|
@@ -31464,37 +32068,71 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
31464
32068
|
window.removeEventListener(ketcherCore.MonomerCreationAttachmentPointClickEvent, attachmentPointClickHandler);
|
|
31465
32069
|
};
|
|
31466
32070
|
}, []);
|
|
31467
|
-
|
|
31468
|
-
|
|
31469
|
-
|
|
31470
|
-
}
|
|
31471
|
-
|
|
31472
|
-
|
|
31473
|
-
|
|
31474
|
-
|
|
31475
|
-
|
|
31476
|
-
|
|
31477
|
-
|
|
31478
|
-
});
|
|
31479
|
-
} else {
|
|
31480
|
-
wizardStateDispatch({
|
|
31481
|
-
type: 'SetFieldValue',
|
|
31482
|
-
fieldId: 'aliasHELM',
|
|
31483
|
-
value: ''
|
|
31484
|
-
});
|
|
32071
|
+
React.useEffect(function () {
|
|
32072
|
+
var isValidRnaComponentKey = function isValidRnaComponentKey(key) {
|
|
32073
|
+
return key === 'base' || key === 'sugar' || key === 'phosphate';
|
|
32074
|
+
};
|
|
32075
|
+
var componentStructureUpdateHandler = function componentStructureUpdateHandler(event) {
|
|
32076
|
+
var updateData = event.detail;
|
|
32077
|
+
var componentKey = updateData.componentKey,
|
|
32078
|
+
atomIds = updateData.atomIds,
|
|
32079
|
+
bondIds = updateData.bondIds;
|
|
32080
|
+
if (!isValidRnaComponentKey(componentKey)) {
|
|
32081
|
+
return;
|
|
31485
32082
|
}
|
|
32083
|
+
rnaPresetWizardStateDispatch({
|
|
32084
|
+
type: 'UpdateRnaPresetComponentStructure',
|
|
32085
|
+
rnaComponentKey: componentKey,
|
|
32086
|
+
atomIds: atomIds,
|
|
32087
|
+
bondIds: bondIds
|
|
32088
|
+
});
|
|
32089
|
+
};
|
|
32090
|
+
window.addEventListener(ketcherCore.MonomerCreationComponentStructureUpdateEvent, componentStructureUpdateHandler);
|
|
32091
|
+
return function () {
|
|
32092
|
+
window.removeEventListener(ketcherCore.MonomerCreationComponentStructureUpdateEvent, componentStructureUpdateHandler);
|
|
32093
|
+
};
|
|
32094
|
+
}, []);
|
|
32095
|
+
var applyTypeChange = function applyTypeChange(newType) {
|
|
32096
|
+
setModificationTypes([]);
|
|
32097
|
+
if ((type === 'rnaPreset' || newType === 'rnaPreset') && type !== newType) {
|
|
32098
|
+
wizardStateDispatch({
|
|
32099
|
+
type: 'ResetWizard'
|
|
32100
|
+
});
|
|
32101
|
+
rnaPresetWizardStateDispatch({
|
|
32102
|
+
type: 'ResetWizard'
|
|
32103
|
+
});
|
|
32104
|
+
} else {
|
|
31486
32105
|
wizardStateDispatch({
|
|
31487
32106
|
type: 'SetFieldValue',
|
|
31488
|
-
fieldId: '
|
|
31489
|
-
value:
|
|
32107
|
+
fieldId: 'aliasHELM',
|
|
32108
|
+
value: ''
|
|
31490
32109
|
});
|
|
32110
|
+
}
|
|
32111
|
+
wizardStateDispatch({
|
|
32112
|
+
type: 'SetFieldValue',
|
|
32113
|
+
fieldId: 'type',
|
|
32114
|
+
value: newType
|
|
32115
|
+
});
|
|
32116
|
+
};
|
|
32117
|
+
var handleFieldChange = function handleFieldChange(fieldId, value) {
|
|
32118
|
+
if (fieldId === 'type') {
|
|
32119
|
+
if (type === 'rnaPreset' && value !== 'rnaPreset') {
|
|
32120
|
+
setPendingType(value);
|
|
32121
|
+
setShowTypeChangeDialog(true);
|
|
32122
|
+
return;
|
|
32123
|
+
}
|
|
32124
|
+
applyTypeChange(value);
|
|
31491
32125
|
} else {
|
|
32126
|
+
if (fieldId === 'naturalAnalogue') {
|
|
32127
|
+
setModificationTypes([]);
|
|
32128
|
+
}
|
|
31492
32129
|
wizardStateDispatch({
|
|
31493
32130
|
type: 'SetFieldValue',
|
|
31494
32131
|
fieldId: fieldId,
|
|
31495
32132
|
value: value
|
|
31496
32133
|
});
|
|
31497
32134
|
}
|
|
32135
|
+
editor.setRnaMonomerCreationMode(value === 'rnaPreset');
|
|
31498
32136
|
};
|
|
31499
32137
|
React.useEffect(function () {
|
|
31500
32138
|
var _editor$setMonomerCre;
|
|
@@ -31874,7 +32512,7 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
31874
32512
|
}
|
|
31875
32513
|
monomerAssignedAttachmentPoints.set(attachmentPointKey, [mappedAttachmentAtomId, mappedLeavingGroupAtomId]);
|
|
31876
32514
|
});
|
|
31877
|
-
var shouldBeHidden = isRnaPresetType
|
|
32515
|
+
var shouldBeHidden = isRnaPresetType;
|
|
31878
32516
|
var valuesToSave = monomerToSave.values;
|
|
31879
32517
|
if (shouldBeHidden) {
|
|
31880
32518
|
valuesToSave = autoAssignPropertiesForHiddenMonomer(monomerToSave.values, rnaPresetWizardState.preset.name);
|
|
@@ -31898,6 +32536,7 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
31898
32536
|
editor.finishNewMonomersCreation(monomersData, rnaPresetWizardState.preset.name);
|
|
31899
32537
|
dispatch(onAction(selectRectangleAction));
|
|
31900
32538
|
resetWizard();
|
|
32539
|
+
dispatch(showSnackbarNotification(isRnaPresetType ? NotificationMessages.creationRNASuccessful : NotificationMessages.creationSuccessful));
|
|
31901
32540
|
}
|
|
31902
32541
|
};
|
|
31903
32542
|
var ketcherEditorRootElement = document.querySelector(KETCHER_ROOT_NODE_CSS_SELECTOR);
|
|
@@ -31986,7 +32625,40 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
31986
32625
|
children: "Submit"
|
|
31987
32626
|
})]
|
|
31988
32627
|
})]
|
|
31989
|
-
}),
|
|
32628
|
+
}), showTypeChangeDialog && ketcherEditorRootElement && ReactDOM.createPortal(jsxRuntime.jsx("div", {
|
|
32629
|
+
className: styles$o.dialogOverlay,
|
|
32630
|
+
children: jsxRuntime.jsx(Dialog, {
|
|
32631
|
+
className: styles$o.smallDialog,
|
|
32632
|
+
title: "Confirm type change",
|
|
32633
|
+
withDivider: true,
|
|
32634
|
+
valid: function valid() {
|
|
32635
|
+
return true;
|
|
32636
|
+
},
|
|
32637
|
+
params: {
|
|
32638
|
+
onOk: function onOk() {
|
|
32639
|
+
if (pendingType !== null) {
|
|
32640
|
+
applyTypeChange(pendingType);
|
|
32641
|
+
}
|
|
32642
|
+
setPendingType(null);
|
|
32643
|
+
setShowTypeChangeDialog(false);
|
|
32644
|
+
},
|
|
32645
|
+
onCancel: function onCancel() {
|
|
32646
|
+
setPendingType(null);
|
|
32647
|
+
setShowTypeChangeDialog(false);
|
|
32648
|
+
}
|
|
32649
|
+
},
|
|
32650
|
+
buttons: ['OK', 'Cancel'],
|
|
32651
|
+
buttonsNameMap: {
|
|
32652
|
+
OK: 'Yes',
|
|
32653
|
+
Cancel: 'Cancel'
|
|
32654
|
+
},
|
|
32655
|
+
primaryButtons: ['Cancel'],
|
|
32656
|
+
children: jsxRuntime.jsx("div", {
|
|
32657
|
+
className: styles$o.DialogMessage,
|
|
32658
|
+
children: "Changing the type will result in a loss of inputted data. Do you wish to proceed?"
|
|
32659
|
+
})
|
|
32660
|
+
})
|
|
32661
|
+
}), ketcherEditorRootElement), leavingGroupDialogMessage && ketcherEditorRootElement && ReactDOM.createPortal(jsxRuntime.jsx("div", {
|
|
31990
32662
|
className: styles$o.dialogOverlay,
|
|
31991
32663
|
children: jsxRuntime.jsx(Dialog, {
|
|
31992
32664
|
className: styles$o.smallDialog,
|
|
@@ -39764,7 +40436,7 @@ var Editor$1 = reactRedux.connect(function (state) {
|
|
|
39764
40436
|
};
|
|
39765
40437
|
}, mapDispatchToProps$1)(StructEditor);
|
|
39766
40438
|
|
|
39767
|
-
var classes$1 = {"app":"App-module_app__8cgyF","canvas":"App-module_canvas__taJxn","top":"App-module_top__SBeSV","left":"App-module_left__2iz-i","right":"App-module_right__U7A5Q","bottom":"App-module_bottom__tQA2B"};
|
|
40439
|
+
var classes$1 = {"app":"App-module_app__8cgyF","canvas":"App-module_canvas__taJxn","top":"App-module_top__SBeSV","left":"App-module_left__2iz-i","right":"App-module_right__U7A5Q","bottom":"App-module_bottom__tQA2B","toastNotification":"App-module_toastNotification__o-bVV","toastNotificationText":"App-module_toastNotificationText__RXYHk","toastNotificationCloseIcon":"App-module_toastNotificationCloseIcon__REXMP"};
|
|
39768
40440
|
|
|
39769
40441
|
var classes = {"lookupContainer":"AbbreviationLookup-module_lookupContainer__-JRMj","inputContainer":"AbbreviationLookup-module_inputContainer__6tJpn","input":"AbbreviationLookup-module_input__vCxY9","searchIcon":"AbbreviationLookup-module_searchIcon__DiK0c","optionItemContent":"AbbreviationLookup-module_optionItemContent__L1JlW","optionItem":"AbbreviationLookup-module_optionItem__dAhO-","noOptions":"AbbreviationLookup-module_noOptions__yKxml","listBox":"AbbreviationLookup-module_listBox__Y50AT"};
|
|
39770
40442
|
|
|
@@ -40064,10 +40736,16 @@ var muiTheme = material.createTheme({
|
|
|
40064
40736
|
var App = function App(props) {
|
|
40065
40737
|
var dispatch = useAppDispatch();
|
|
40066
40738
|
var checkServer = props.checkServer;
|
|
40739
|
+
var snackbarNotificationText = reactRedux.useSelector(selectSnackbarNotificationText);
|
|
40067
40740
|
useSubscriptionOnEvents();
|
|
40068
40741
|
var _useAppContext = useAppContext(),
|
|
40069
40742
|
ketcherId = _useAppContext.ketcherId,
|
|
40070
40743
|
prevKetcherId = _useAppContext.prevKetcherId;
|
|
40744
|
+
var handleCloseSnackbarNotification = React.useCallback(function () {
|
|
40745
|
+
dispatch({
|
|
40746
|
+
type: 'HIDE_SNACKBAR_NOTIFICATION'
|
|
40747
|
+
});
|
|
40748
|
+
}, [dispatch]);
|
|
40071
40749
|
React.useEffect(function () {
|
|
40072
40750
|
checkServer();
|
|
40073
40751
|
dispatch(initFGTemplates());
|
|
@@ -40100,7 +40778,26 @@ var App = function App(props) {
|
|
|
40100
40778
|
}),
|
|
40101
40779
|
jsxRuntime.jsx(AppClipArea, {}), jsxRuntime.jsx(ModalContainer, {
|
|
40102
40780
|
ketcherId: ketcherId
|
|
40103
|
-
}), jsxRuntime.jsx(AbbreviationLookupContainer, {})
|
|
40781
|
+
}), jsxRuntime.jsx(AbbreviationLookupContainer, {}), jsxRuntime.jsx(material.Snackbar, {
|
|
40782
|
+
anchorOrigin: {
|
|
40783
|
+
vertical: 'bottom',
|
|
40784
|
+
horizontal: 'center'
|
|
40785
|
+
},
|
|
40786
|
+
open: Boolean(snackbarNotificationText),
|
|
40787
|
+
onClose: handleCloseSnackbarNotification,
|
|
40788
|
+
autoHideDuration: 6000,
|
|
40789
|
+
children: jsxRuntime.jsxs("div", {
|
|
40790
|
+
className: classes$1.toastNotification,
|
|
40791
|
+
children: [jsxRuntime.jsx("div", {
|
|
40792
|
+
className: classes$1.toastNotificationText,
|
|
40793
|
+
children: snackbarNotificationText
|
|
40794
|
+
}), jsxRuntime.jsx(IconButton, {
|
|
40795
|
+
iconName: "close",
|
|
40796
|
+
className: classes$1.toastNotificationCloseIcon,
|
|
40797
|
+
onClick: handleCloseSnackbarNotification
|
|
40798
|
+
})]
|
|
40799
|
+
})
|
|
40800
|
+
})]
|
|
40104
40801
|
})
|
|
40105
40802
|
});
|
|
40106
40803
|
};
|
|
@@ -40279,8 +40976,8 @@ var KetcherBuilder = function () {
|
|
|
40279
40976
|
cleanup = initApp(prevKetcherId, ketcherId, element, appRoot, staticResourcesUrl, {
|
|
40280
40977
|
buttons: buttons || {},
|
|
40281
40978
|
errorHandler: errorHandler || null,
|
|
40282
|
-
version: "3.12.0-
|
|
40283
|
-
buildDate: "
|
|
40979
|
+
version: "3.12.0-rc.1" ,
|
|
40980
|
+
buildDate: "2026-01-08T17:45:33" ,
|
|
40284
40981
|
buildNumber: '',
|
|
40285
40982
|
customButtons: customButtons || []
|
|
40286
40983
|
}, structService, resolve, togglerComponent);
|
|
@@ -40581,7 +41278,7 @@ var ModeControl = function ModeControl(_ref3) {
|
|
|
40581
41278
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
40582
41279
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
40583
41280
|
var MacromoleculesEditorComponent = React.lazy(function () {
|
|
40584
|
-
return Promise.resolve().then(function () { return require('./index.modern-
|
|
41281
|
+
return Promise.resolve().then(function () { return require('./index.modern-4b58287a.js'); });
|
|
40585
41282
|
});
|
|
40586
41283
|
var Editor = function Editor(props) {
|
|
40587
41284
|
var _useState = React.useState(false),
|