ketcher-react 3.12.0-dev.1 → 3.12.0-rc.2
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 +1226 -524
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/{index.modern-b232add2.js → index.modern-0386b391.js} +4 -3
- package/dist/cjs/index.modern-0386b391.js.map +1 -0
- package/dist/cjs/script/editor/Editor.d.ts +19 -2
- 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 +1228 -526
- package/dist/index.js.map +1 -1
- package/dist/{index.modern-06d576e1.js → index.modern-3f8330b9.js} +5 -4
- package/dist/index.modern-3f8330b9.js.map +1 -0
- package/dist/script/editor/Editor.d.ts +19 -2
- 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.2\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() {
|
|
@@ -26106,6 +26297,7 @@ var Editor$3 = function () {
|
|
|
26106
26297
|
var _this2 = this;
|
|
26107
26298
|
var forceAddNewLeavingGroupAtom = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
26108
26299
|
var leavingAtomLabel = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : ketcherCore.AtomLabel.H;
|
|
26300
|
+
var leavingAtomPosition = arguments.length > 6 ? arguments[6] : undefined;
|
|
26109
26301
|
assert_1(this.monomerCreationState);
|
|
26110
26302
|
var potentialLeavingAtoms = this.monomerCreationState.potentialAttachmentPoints.get(atomId);
|
|
26111
26303
|
var leavingAtomId;
|
|
@@ -26135,7 +26327,7 @@ var Editor$3 = function () {
|
|
|
26135
26327
|
stereo: ketcherCore.Bond.PATTERN.STEREO.NONE
|
|
26136
26328
|
}, atomId, {
|
|
26137
26329
|
label: leavingAtomLabel
|
|
26138
|
-
}),
|
|
26330
|
+
}, undefined, leavingAtomPosition),
|
|
26139
26331
|
_fromBondAddition2 = _slicedToArray__default["default"](_fromBondAddition, 4),
|
|
26140
26332
|
bondAdditionAction = _fromBondAddition2[0],
|
|
26141
26333
|
endAtomId = _fromBondAddition2[2],
|
|
@@ -26521,18 +26713,244 @@ var Editor$3 = function () {
|
|
|
26521
26713
|
});
|
|
26522
26714
|
return potentialLeavingAtoms;
|
|
26523
26715
|
}
|
|
26716
|
+
}, {
|
|
26717
|
+
key: "getRnaComponentForAtom",
|
|
26718
|
+
value: function getRnaComponentForAtom(atomId) {
|
|
26719
|
+
var _this$monomerCreation;
|
|
26720
|
+
var rnaComponentAtoms = (_this$monomerCreation = this.monomerCreationState) === null || _this$monomerCreation === void 0 ? void 0 : _this$monomerCreation.rnaComponentAtoms;
|
|
26721
|
+
if (!rnaComponentAtoms) {
|
|
26722
|
+
return null;
|
|
26723
|
+
}
|
|
26724
|
+
var _iterator2 = _createForOfIteratorHelper$2(rnaComponentAtoms.entries()),
|
|
26725
|
+
_step2;
|
|
26726
|
+
try {
|
|
26727
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
26728
|
+
var _step2$value = _slicedToArray__default["default"](_step2.value, 2),
|
|
26729
|
+
componentKey = _step2$value[0],
|
|
26730
|
+
componentData = _step2$value[1];
|
|
26731
|
+
if (componentData.atoms.includes(atomId)) {
|
|
26732
|
+
return componentKey;
|
|
26733
|
+
}
|
|
26734
|
+
}
|
|
26735
|
+
} catch (err) {
|
|
26736
|
+
_iterator2.e(err);
|
|
26737
|
+
} finally {
|
|
26738
|
+
_iterator2.f();
|
|
26739
|
+
}
|
|
26740
|
+
return null;
|
|
26741
|
+
}
|
|
26742
|
+
}, {
|
|
26743
|
+
key: "canAssignRnaComponent",
|
|
26744
|
+
value: function canAssignRnaComponent(bond) {
|
|
26745
|
+
var _this$monomerCreation2,
|
|
26746
|
+
_this6 = this;
|
|
26747
|
+
if (!((_this$monomerCreation2 = this.monomerCreationState) !== null && _this$monomerCreation2 !== void 0 && _this$monomerCreation2.rnaComponentAtoms)) {
|
|
26748
|
+
return false;
|
|
26749
|
+
}
|
|
26750
|
+
var beginAtomRnaComponent = this.getRnaComponentForAtom(bond.begin);
|
|
26751
|
+
var endAtomRnaComponent = this.getRnaComponentForAtom(bond.end);
|
|
26752
|
+
if (!beginAtomRnaComponent && !endAtomRnaComponent || beginAtomRnaComponent && endAtomRnaComponent && beginAtomRnaComponent !== endAtomRnaComponent) {
|
|
26753
|
+
return false;
|
|
26754
|
+
}
|
|
26755
|
+
var rnaComponentToAssign = beginAtomRnaComponent || endAtomRnaComponent;
|
|
26756
|
+
var struct = this.struct();
|
|
26757
|
+
var atomIdToStartFrom = beginAtomRnaComponent ? bond.begin : bond.end;
|
|
26758
|
+
var visitedAtomIds = new Set();
|
|
26759
|
+
var atomsToCheck = [atomIdToStartFrom];
|
|
26760
|
+
var hasConnectionToAnotherComponent = false;
|
|
26761
|
+
var hasConnectionToOriginalStructure = false;
|
|
26762
|
+
visitedAtomIds.add(atomIdToStartFrom);
|
|
26763
|
+
var _loop = function _loop() {
|
|
26764
|
+
var currentAtomId = atomsToCheck.pop();
|
|
26765
|
+
var currentAtom = _.isNumber(currentAtomId) ? struct.atoms.get(currentAtomId) : undefined;
|
|
26766
|
+
if (!currentAtom) {
|
|
26767
|
+
return 1;
|
|
26768
|
+
}
|
|
26769
|
+
currentAtom === null || currentAtom === void 0 || currentAtom.neighbors.forEach(function (neighbor) {
|
|
26770
|
+
var halfBond = struct.halfBonds.get(neighbor);
|
|
26771
|
+
if (hasConnectionToAnotherComponent || hasConnectionToOriginalStructure) {
|
|
26772
|
+
return;
|
|
26773
|
+
}
|
|
26774
|
+
if (!halfBond) {
|
|
26775
|
+
ketcherCore.KetcherLogger.warn('Half-bond not found in structure');
|
|
26776
|
+
return;
|
|
26777
|
+
}
|
|
26778
|
+
var neighborAtomId = halfBond.begin === currentAtomId ? halfBond.end : halfBond.begin;
|
|
26779
|
+
if (visitedAtomIds.has(neighborAtomId)) {
|
|
26780
|
+
return;
|
|
26781
|
+
}
|
|
26782
|
+
visitedAtomIds.add(neighborAtomId);
|
|
26783
|
+
var neighborAtomRnaComponent = _this6.getRnaComponentForAtom(neighborAtomId);
|
|
26784
|
+
if (neighborAtomRnaComponent === rnaComponentToAssign) {
|
|
26785
|
+
return;
|
|
26786
|
+
}
|
|
26787
|
+
if (neighborAtomRnaComponent && neighborAtomRnaComponent !== rnaComponentToAssign) {
|
|
26788
|
+
hasConnectionToAnotherComponent = true;
|
|
26789
|
+
return;
|
|
26790
|
+
}
|
|
26791
|
+
var originalAtomId = _this6.selectedToOriginalAtomsIdMap.get(neighborAtomId);
|
|
26792
|
+
if (_.isNumber(originalAtomId) && _this6.originalStruct.atoms.has(originalAtomId)) {
|
|
26793
|
+
hasConnectionToOriginalStructure = true;
|
|
26794
|
+
return;
|
|
26795
|
+
}
|
|
26796
|
+
atomsToCheck.push(neighborAtomId);
|
|
26797
|
+
visitedAtomIds.add(neighborAtomId);
|
|
26798
|
+
});
|
|
26799
|
+
};
|
|
26800
|
+
while (atomsToCheck.length > 0) {
|
|
26801
|
+
if (_loop()) continue;
|
|
26802
|
+
}
|
|
26803
|
+
if (hasConnectionToAnotherComponent || hasConnectionToOriginalStructure) {
|
|
26804
|
+
return false;
|
|
26805
|
+
}
|
|
26806
|
+
return true;
|
|
26807
|
+
}
|
|
26808
|
+
}, {
|
|
26809
|
+
key: "autoAssignAtomToRnaComponent",
|
|
26810
|
+
value: function autoAssignAtomToRnaComponent(bondId) {
|
|
26811
|
+
var _this$monomerCreation3;
|
|
26812
|
+
var rnaComponentAtoms = (_this$monomerCreation3 = this.monomerCreationState) === null || _this$monomerCreation3 === void 0 ? void 0 : _this$monomerCreation3.rnaComponentAtoms;
|
|
26813
|
+
if (!rnaComponentAtoms) {
|
|
26814
|
+
return;
|
|
26815
|
+
}
|
|
26816
|
+
var struct = this.struct();
|
|
26817
|
+
var bond = struct.bonds.get(bondId);
|
|
26818
|
+
if (!bond) {
|
|
26819
|
+
ketcherCore.KetcherLogger.warn('Bond not found in structure');
|
|
26820
|
+
return;
|
|
26821
|
+
}
|
|
26822
|
+
var beginAtomComponent = this.getRnaComponentForAtom(bond.begin);
|
|
26823
|
+
var endAtomComponent = this.getRnaComponentForAtom(bond.end);
|
|
26824
|
+
var componentToMark = beginAtomComponent || endAtomComponent;
|
|
26825
|
+
if (!componentToMark) {
|
|
26826
|
+
return;
|
|
26827
|
+
}
|
|
26828
|
+
var atomsIdsToMark = [];
|
|
26829
|
+
var bondIdsToMark = [];
|
|
26830
|
+
var bondIdsToCheck = [bondId];
|
|
26831
|
+
var visitedBonds = new Set();
|
|
26832
|
+
while (bondIdsToCheck.length > 0) {
|
|
26833
|
+
var currentBondId = bondIdsToCheck.pop();
|
|
26834
|
+
var currentBond = _.isNumber(currentBondId) ? struct.bonds.get(currentBondId) : undefined;
|
|
26835
|
+
if (!_.isNumber(currentBondId) || !currentBond || visitedBonds.has(currentBondId)) {
|
|
26836
|
+
continue;
|
|
26837
|
+
}
|
|
26838
|
+
bondIdsToMark.push(currentBondId);
|
|
26839
|
+
visitedBonds.add(currentBondId);
|
|
26840
|
+
var beginAtom = struct.atoms.get(currentBond.begin);
|
|
26841
|
+
var endAtom = struct.atoms.get(currentBond.end);
|
|
26842
|
+
var beginAtomRnaComponent = this.getRnaComponentForAtom(currentBond.begin);
|
|
26843
|
+
var endAtomRnaComponent = this.getRnaComponentForAtom(currentBond.end);
|
|
26844
|
+
var atomsToContinue = [];
|
|
26845
|
+
if (beginAtom && beginAtomRnaComponent !== componentToMark) {
|
|
26846
|
+
atomsIdsToMark.push(currentBond.begin);
|
|
26847
|
+
atomsToContinue.push(beginAtom);
|
|
26848
|
+
}
|
|
26849
|
+
if (endAtom && endAtomRnaComponent !== componentToMark) {
|
|
26850
|
+
atomsIdsToMark.push(currentBond.end);
|
|
26851
|
+
atomsToContinue.push(endAtom);
|
|
26852
|
+
}
|
|
26853
|
+
atomsToContinue.forEach(function (atom) {
|
|
26854
|
+
atom.neighbors.forEach(function (halfBondId) {
|
|
26855
|
+
var halfBond = struct.halfBonds.get(halfBondId);
|
|
26856
|
+
if (!halfBond) {
|
|
26857
|
+
ketcherCore.KetcherLogger.warn('Half-bond not found in structure');
|
|
26858
|
+
return;
|
|
26859
|
+
}
|
|
26860
|
+
var nextBondId = halfBond.bid;
|
|
26861
|
+
var nextBond = struct.bonds.get(nextBondId);
|
|
26862
|
+
if (!nextBond || bondIdsToCheck.includes(nextBondId)) {
|
|
26863
|
+
ketcherCore.KetcherLogger.warn('Bond not found in structure');
|
|
26864
|
+
return;
|
|
26865
|
+
}
|
|
26866
|
+
bondIdsToCheck.push(nextBondId);
|
|
26867
|
+
});
|
|
26868
|
+
});
|
|
26869
|
+
}
|
|
26870
|
+
this.addAtomsAndBondsToRnaComponent(componentToMark, atomsIdsToMark, bondIdsToMark);
|
|
26871
|
+
}
|
|
26872
|
+
}, {
|
|
26873
|
+
key: "updateRnaComponentStructureState",
|
|
26874
|
+
value: function updateRnaComponentStructureState(componentKey, updatedAtoms, updatedBonds) {
|
|
26875
|
+
var _this$monomerCreation4;
|
|
26876
|
+
(_this$monomerCreation4 = this.monomerCreationState) === null || _this$monomerCreation4 === void 0 || (_this$monomerCreation4 = _this$monomerCreation4.rnaComponentAtoms) === null || _this$monomerCreation4 === void 0 || _this$monomerCreation4.set(componentKey, {
|
|
26877
|
+
atoms: updatedAtoms,
|
|
26878
|
+
bonds: updatedBonds
|
|
26879
|
+
});
|
|
26880
|
+
var eventData = {
|
|
26881
|
+
componentKey: componentKey,
|
|
26882
|
+
atomIds: updatedAtoms,
|
|
26883
|
+
bondIds: updatedBonds
|
|
26884
|
+
};
|
|
26885
|
+
window.dispatchEvent(new CustomEvent(ketcherCore.MonomerCreationComponentStructureUpdateEvent, {
|
|
26886
|
+
detail: eventData
|
|
26887
|
+
}));
|
|
26888
|
+
}
|
|
26889
|
+
}, {
|
|
26890
|
+
key: "addAtomsAndBondsToRnaComponent",
|
|
26891
|
+
value: function addAtomsAndBondsToRnaComponent(componentKey, atomIds, bondIds) {
|
|
26892
|
+
var _this$monomerCreation5;
|
|
26893
|
+
if (!((_this$monomerCreation5 = this.monomerCreationState) !== null && _this$monomerCreation5 !== void 0 && _this$monomerCreation5.rnaComponentAtoms)) {
|
|
26894
|
+
return;
|
|
26895
|
+
}
|
|
26896
|
+
var componentData = this.monomerCreationState.rnaComponentAtoms.get(componentKey);
|
|
26897
|
+
if (!componentData) {
|
|
26898
|
+
return;
|
|
26899
|
+
}
|
|
26900
|
+
var updatedAtoms = _toConsumableArray__default["default"](componentData.atoms);
|
|
26901
|
+
var updatedBonds = _toConsumableArray__default["default"](componentData.bonds);
|
|
26902
|
+
atomIds.forEach(function (atomId) {
|
|
26903
|
+
if (!updatedAtoms.includes(atomId)) {
|
|
26904
|
+
updatedAtoms.push(atomId);
|
|
26905
|
+
}
|
|
26906
|
+
});
|
|
26907
|
+
bondIds.forEach(function (bondId) {
|
|
26908
|
+
if (!updatedBonds.includes(bondId)) {
|
|
26909
|
+
updatedBonds.push(bondId);
|
|
26910
|
+
}
|
|
26911
|
+
});
|
|
26912
|
+
this.updateRnaComponentStructureState(componentKey, updatedAtoms, updatedBonds);
|
|
26913
|
+
}
|
|
26914
|
+
}, {
|
|
26915
|
+
key: "removeAtomsAndBondsFromRnaComponents",
|
|
26916
|
+
value: function removeAtomsAndBondsFromRnaComponents(atomIds, bondIds) {
|
|
26917
|
+
var _this$monomerCreation6;
|
|
26918
|
+
if (!((_this$monomerCreation6 = this.monomerCreationState) !== null && _this$monomerCreation6 !== void 0 && _this$monomerCreation6.rnaComponentAtoms)) {
|
|
26919
|
+
return;
|
|
26920
|
+
}
|
|
26921
|
+
var _iterator3 = _createForOfIteratorHelper$2(this.monomerCreationState.rnaComponentAtoms.entries()),
|
|
26922
|
+
_step3;
|
|
26923
|
+
try {
|
|
26924
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
26925
|
+
var _step3$value = _slicedToArray__default["default"](_step3.value, 2),
|
|
26926
|
+
componentKey = _step3$value[0],
|
|
26927
|
+
componentData = _step3$value[1];
|
|
26928
|
+
var updatedAtoms = componentData.atoms.filter(function (atomId) {
|
|
26929
|
+
return !atomIds.includes(atomId);
|
|
26930
|
+
});
|
|
26931
|
+
var updatedBonds = componentData.bonds.filter(function (bondId) {
|
|
26932
|
+
return !bondIds.includes(bondId);
|
|
26933
|
+
});
|
|
26934
|
+
this.updateRnaComponentStructureState(componentKey, updatedAtoms, updatedBonds);
|
|
26935
|
+
}
|
|
26936
|
+
} catch (err) {
|
|
26937
|
+
_iterator3.e(err);
|
|
26938
|
+
} finally {
|
|
26939
|
+
_iterator3.f();
|
|
26940
|
+
}
|
|
26941
|
+
}
|
|
26524
26942
|
}, {
|
|
26525
26943
|
key: "subscribeToChangeEventInMonomerCreationWizard",
|
|
26526
26944
|
value: function subscribeToChangeEventInMonomerCreationWizard() {
|
|
26527
|
-
var
|
|
26945
|
+
var _this7 = this;
|
|
26528
26946
|
if (this.changeEventSubscriber) {
|
|
26529
26947
|
return;
|
|
26530
26948
|
}
|
|
26531
26949
|
var handleChangeEvent = function handleChangeEvent(data) {
|
|
26532
|
-
if (!
|
|
26950
|
+
if (!_this7.isMonomerCreationWizardActive || data.length === 0) {
|
|
26533
26951
|
return;
|
|
26534
26952
|
}
|
|
26535
|
-
|
|
26953
|
+
_this7.collectChangesForMonomerCreationStateInvalidation(data);
|
|
26536
26954
|
};
|
|
26537
26955
|
this.changeEventSubscriber = this.subscribe('change', handleChangeEvent);
|
|
26538
26956
|
}
|
|
@@ -26553,9 +26971,11 @@ var Editor$3 = function () {
|
|
|
26553
26971
|
var changesMap = new Map();
|
|
26554
26972
|
data.forEach(function (entry) {
|
|
26555
26973
|
switch (entry.operation) {
|
|
26974
|
+
case ketcherCore.OperationType.ATOM_ADD:
|
|
26556
26975
|
case ketcherCore.OperationType.ATOM_DELETE:
|
|
26557
26976
|
case ketcherCore.OperationType.ATOM_ATTR:
|
|
26558
26977
|
case ketcherCore.OperationType.BOND_ADD:
|
|
26978
|
+
case ketcherCore.OperationType.BOND_DELETE:
|
|
26559
26979
|
case ketcherCore.OperationType.BOND_ATTR:
|
|
26560
26980
|
{
|
|
26561
26981
|
if (entry.id !== undefined) {
|
|
@@ -26575,21 +26995,21 @@ var Editor$3 = function () {
|
|
|
26575
26995
|
}, {
|
|
26576
26996
|
key: "invalidateMonomerCreationWizardState",
|
|
26577
26997
|
value: function invalidateMonomerCreationWizardState(changesMap) {
|
|
26578
|
-
var
|
|
26998
|
+
var _this8 = this;
|
|
26579
26999
|
if (!this.monomerCreationState) {
|
|
26580
27000
|
return;
|
|
26581
27001
|
}
|
|
26582
|
-
var
|
|
26583
|
-
|
|
27002
|
+
var _iterator4 = _createForOfIteratorHelper$2(changesMap.entries()),
|
|
27003
|
+
_step4;
|
|
26584
27004
|
try {
|
|
26585
|
-
var
|
|
26586
|
-
var
|
|
26587
|
-
operation =
|
|
26588
|
-
ids =
|
|
27005
|
+
var _loop2 = function _loop2() {
|
|
27006
|
+
var _step4$value = _slicedToArray__default["default"](_step4.value, 2),
|
|
27007
|
+
operation = _step4$value[0],
|
|
27008
|
+
ids = _step4$value[1];
|
|
26589
27009
|
switch (operation) {
|
|
26590
27010
|
case ketcherCore.OperationType.ATOM_DELETE:
|
|
26591
27011
|
{
|
|
26592
|
-
var attachmentPointsToInvalidate = Array.from(
|
|
27012
|
+
var attachmentPointsToInvalidate = Array.from(_this8.monomerCreationState.assignedAttachmentPoints.entries()).filter(function (_ref11) {
|
|
26593
27013
|
var _ref12 = _slicedToArray__default["default"](_ref11, 2),
|
|
26594
27014
|
atomPair = _ref12[1];
|
|
26595
27015
|
return ids.has(atomPair[0]) || ids.has(atomPair[1]);
|
|
@@ -26605,67 +27025,68 @@ var Editor$3 = function () {
|
|
|
26605
27025
|
attachmentAtomId = _atomPair5[0],
|
|
26606
27026
|
leavingAtomId = _atomPair5[1];
|
|
26607
27027
|
if (ids.has(attachmentAtomId)) {
|
|
26608
|
-
var
|
|
26609
|
-
(
|
|
27028
|
+
var _this8$monomerCreatio;
|
|
27029
|
+
(_this8$monomerCreatio = _this8.monomerCreationState) === null || _this8$monomerCreatio === void 0 || _this8$monomerCreatio.assignedAttachmentPoints["delete"](attachmentPointName);
|
|
26610
27030
|
} else if (ids.has(leavingAtomId)) {
|
|
26611
|
-
var potentialLeavingAtoms =
|
|
27031
|
+
var potentialLeavingAtoms = _this8.findPotentialLeavingAtoms(attachmentAtomId);
|
|
26612
27032
|
if (potentialLeavingAtoms.length === 0) {
|
|
26613
|
-
var
|
|
26614
|
-
(
|
|
27033
|
+
var _this8$monomerCreatio2;
|
|
27034
|
+
(_this8$monomerCreatio2 = _this8.monomerCreationState) === null || _this8$monomerCreatio2 === void 0 || _this8$monomerCreatio2.assignedAttachmentPoints["delete"](attachmentPointName);
|
|
26615
27035
|
} else {
|
|
26616
|
-
var
|
|
26617
|
-
var newLeavingAtomId =
|
|
27036
|
+
var _this8$monomerCreatio3;
|
|
27037
|
+
var newLeavingAtomId = _this8.struct().atoms.keyOf(potentialLeavingAtoms[0]);
|
|
26618
27038
|
assert_1(newLeavingAtomId !== null);
|
|
26619
|
-
(
|
|
27039
|
+
(_this8$monomerCreatio3 = _this8.monomerCreationState) === null || _this8$monomerCreatio3 === void 0 || _this8$monomerCreatio3.assignedAttachmentPoints.set(attachmentPointName, [attachmentAtomId, newLeavingAtomId]);
|
|
26620
27040
|
}
|
|
26621
27041
|
}
|
|
26622
27042
|
});
|
|
26623
|
-
var potentialAttachmentPointsToInvalidate = Array.from(
|
|
27043
|
+
var potentialAttachmentPointsToInvalidate = Array.from(_this8.monomerCreationState.potentialAttachmentPoints.entries());
|
|
26624
27044
|
potentialAttachmentPointsToInvalidate.forEach(function (_ref15) {
|
|
26625
27045
|
var _ref16 = _slicedToArray__default["default"](_ref15, 2),
|
|
26626
27046
|
attachmentAtomId = _ref16[0],
|
|
26627
27047
|
leavingAtomIds = _ref16[1];
|
|
26628
27048
|
if (ids.has(attachmentAtomId)) {
|
|
26629
|
-
var
|
|
26630
|
-
(
|
|
27049
|
+
var _this8$monomerCreatio4;
|
|
27050
|
+
(_this8$monomerCreatio4 = _this8.monomerCreationState) === null || _this8$monomerCreatio4 === void 0 || _this8$monomerCreatio4.potentialAttachmentPoints["delete"](attachmentAtomId);
|
|
26631
27051
|
} else {
|
|
26632
27052
|
var updatedLeavingAtomIds = new Set(Array.from(leavingAtomIds).filter(function (id) {
|
|
26633
27053
|
return !ids.has(id);
|
|
26634
27054
|
}));
|
|
26635
27055
|
if (updatedLeavingAtomIds.size === 0) {
|
|
26636
|
-
var
|
|
26637
|
-
(
|
|
27056
|
+
var _this8$monomerCreatio5;
|
|
27057
|
+
(_this8$monomerCreatio5 = _this8.monomerCreationState) === null || _this8$monomerCreatio5 === void 0 || _this8$monomerCreatio5.potentialAttachmentPoints["delete"](attachmentAtomId);
|
|
26638
27058
|
} else {
|
|
26639
|
-
var
|
|
26640
|
-
(
|
|
27059
|
+
var _this8$monomerCreatio6;
|
|
27060
|
+
(_this8$monomerCreatio6 = _this8.monomerCreationState) === null || _this8$monomerCreatio6 === void 0 || _this8$monomerCreatio6.potentialAttachmentPoints.set(attachmentAtomId, updatedLeavingAtomIds);
|
|
26641
27061
|
}
|
|
26642
27062
|
}
|
|
26643
27063
|
});
|
|
27064
|
+
_this8.removeAtomsAndBondsFromRnaComponents([], _toConsumableArray__default["default"](ids.values()));
|
|
26644
27065
|
}
|
|
26645
27066
|
break;
|
|
26646
27067
|
case ketcherCore.OperationType.BOND_ATTR:
|
|
26647
27068
|
{
|
|
26648
|
-
var
|
|
26649
|
-
|
|
27069
|
+
var _iterator5 = _createForOfIteratorHelper$2(ids.values()),
|
|
27070
|
+
_step5;
|
|
26650
27071
|
try {
|
|
26651
|
-
var
|
|
26652
|
-
var id =
|
|
26653
|
-
var bond =
|
|
27072
|
+
var _loop3 = function _loop3() {
|
|
27073
|
+
var id = _step5.value;
|
|
27074
|
+
var bond = _this8.struct().bonds.get(id);
|
|
26654
27075
|
assert_1(bond);
|
|
26655
|
-
var attachmentPointWithBond = Array.from(
|
|
27076
|
+
var attachmentPointWithBond = Array.from(_this8.monomerCreationState.assignedAttachmentPoints.entries()).find(function (_ref17) {
|
|
26656
27077
|
var _ref18 = _slicedToArray__default["default"](_ref17, 2),
|
|
26657
27078
|
atomPair = _ref18[1];
|
|
26658
27079
|
return bond.begin === atomPair[0] && bond.end === atomPair[1] || bond.begin === atomPair[1] && bond.end === atomPair[0];
|
|
26659
27080
|
});
|
|
26660
27081
|
if (attachmentPointWithBond) {
|
|
26661
27082
|
if (!Editor.isBondSuitableForAttachmentPoint(bond)) {
|
|
26662
|
-
|
|
27083
|
+
_this8.monomerCreationState.problematicAttachmentPoints.add(attachmentPointWithBond[0]);
|
|
26663
27084
|
} else {
|
|
26664
|
-
|
|
27085
|
+
_this8.monomerCreationState.problematicAttachmentPoints["delete"](attachmentPointWithBond[0]);
|
|
26665
27086
|
}
|
|
26666
27087
|
}
|
|
26667
27088
|
if (!Editor.isBondSuitableForAttachmentPoint(bond)) {
|
|
26668
|
-
|
|
27089
|
+
_this8.monomerCreationState.potentialAttachmentPoints.forEach(function (leavingAtomIds, attachmentAtomId) {
|
|
26669
27090
|
var updatedLeavingAtomIds = new Set(leavingAtomIds);
|
|
26670
27091
|
var bondFromAttachmentAtom = bond.begin === attachmentAtomId && leavingAtomIds.has(bond.end);
|
|
26671
27092
|
var bondToAttachmentAtom = bond.end === attachmentAtomId && leavingAtomIds.has(bond.begin);
|
|
@@ -26673,35 +27094,35 @@ var Editor$3 = function () {
|
|
|
26673
27094
|
updatedLeavingAtomIds["delete"](bondFromAttachmentAtom ? bond.end : bond.begin);
|
|
26674
27095
|
}
|
|
26675
27096
|
if (updatedLeavingAtomIds.size === 0) {
|
|
26676
|
-
var
|
|
26677
|
-
(
|
|
27097
|
+
var _this8$monomerCreatio7;
|
|
27098
|
+
(_this8$monomerCreatio7 = _this8.monomerCreationState) === null || _this8$monomerCreatio7 === void 0 || _this8$monomerCreatio7.potentialAttachmentPoints["delete"](attachmentAtomId);
|
|
26678
27099
|
} else {
|
|
26679
|
-
var
|
|
26680
|
-
(
|
|
27100
|
+
var _this8$monomerCreatio8;
|
|
27101
|
+
(_this8$monomerCreatio8 = _this8.monomerCreationState) === null || _this8$monomerCreatio8 === void 0 || _this8$monomerCreatio8.potentialAttachmentPoints.set(attachmentAtomId, updatedLeavingAtomIds);
|
|
26681
27102
|
}
|
|
26682
27103
|
});
|
|
26683
27104
|
}
|
|
26684
27105
|
};
|
|
26685
|
-
for (
|
|
26686
|
-
|
|
27106
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
27107
|
+
_loop3();
|
|
26687
27108
|
}
|
|
26688
27109
|
} catch (err) {
|
|
26689
|
-
|
|
27110
|
+
_iterator5.e(err);
|
|
26690
27111
|
} finally {
|
|
26691
|
-
|
|
27112
|
+
_iterator5.f();
|
|
26692
27113
|
}
|
|
26693
27114
|
break;
|
|
26694
27115
|
}
|
|
26695
27116
|
case ketcherCore.OperationType.BOND_ADD:
|
|
26696
27117
|
{
|
|
26697
|
-
var
|
|
26698
|
-
|
|
27118
|
+
var _iterator6 = _createForOfIteratorHelper$2(ids.values()),
|
|
27119
|
+
_step6;
|
|
26699
27120
|
try {
|
|
26700
|
-
var
|
|
26701
|
-
var id =
|
|
26702
|
-
var bond =
|
|
27121
|
+
var _loop4 = function _loop4() {
|
|
27122
|
+
var id = _step6.value;
|
|
27123
|
+
var bond = _this8.struct().bonds.get(id);
|
|
26703
27124
|
assert_1(bond);
|
|
26704
|
-
var attachmentPointWithBondToLeavingAtom = Array.from(
|
|
27125
|
+
var attachmentPointWithBondToLeavingAtom = Array.from(_this8.monomerCreationState.assignedAttachmentPoints.entries()).find(function (_ref19) {
|
|
26705
27126
|
var _ref20 = _slicedToArray__default["default"](_ref19, 2),
|
|
26706
27127
|
_ref20$ = _slicedToArray__default["default"](_ref20[1], 2),
|
|
26707
27128
|
attachmentAtomId = _ref20$[0],
|
|
@@ -26711,55 +27132,72 @@ var Editor$3 = function () {
|
|
|
26711
27132
|
if (attachmentPointWithBondToLeavingAtom) {
|
|
26712
27133
|
var _attachmentPointWithB = _slicedToArray__default["default"](attachmentPointWithBondToLeavingAtom, 1),
|
|
26713
27134
|
attachmentPointName = _attachmentPointWithB[0];
|
|
26714
|
-
|
|
27135
|
+
_this8.monomerCreationState.assignedAttachmentPoints["delete"](attachmentPointName);
|
|
26715
27136
|
}
|
|
26716
27137
|
if (Editor.isBondSuitableForAttachmentPoint(bond)) {
|
|
26717
|
-
if (
|
|
26718
|
-
var leavingAtomIds =
|
|
27138
|
+
if (_this8.monomerCreationState.potentialAttachmentPoints.has(bond.begin)) {
|
|
27139
|
+
var leavingAtomIds = _this8.monomerCreationState.potentialAttachmentPoints.get(bond.begin);
|
|
26719
27140
|
assert_1(leavingAtomIds);
|
|
26720
|
-
var endAtom =
|
|
27141
|
+
var endAtom = _this8.struct().atoms.get(bond.end);
|
|
26721
27142
|
if (endAtom && endAtom.neighbors.length === 1) {
|
|
26722
27143
|
var updatedLeavingAtomIds = new Set(leavingAtomIds);
|
|
26723
27144
|
updatedLeavingAtomIds.add(bond.end);
|
|
26724
|
-
|
|
27145
|
+
_this8.monomerCreationState.potentialAttachmentPoints.set(bond.begin, updatedLeavingAtomIds);
|
|
26725
27146
|
}
|
|
26726
27147
|
}
|
|
26727
|
-
if (
|
|
26728
|
-
var _leavingAtomIds =
|
|
27148
|
+
if (_this8.monomerCreationState.potentialAttachmentPoints.has(bond.end)) {
|
|
27149
|
+
var _leavingAtomIds = _this8.monomerCreationState.potentialAttachmentPoints.get(bond.end);
|
|
26729
27150
|
assert_1(_leavingAtomIds);
|
|
26730
|
-
var beginAtom =
|
|
27151
|
+
var beginAtom = _this8.struct().atoms.get(bond.begin);
|
|
26731
27152
|
if (beginAtom && beginAtom.neighbors.length === 1) {
|
|
26732
27153
|
var _updatedLeavingAtomIds = new Set(_leavingAtomIds);
|
|
26733
27154
|
_updatedLeavingAtomIds.add(bond.begin);
|
|
26734
|
-
|
|
27155
|
+
_this8.monomerCreationState.potentialAttachmentPoints.set(bond.end, _updatedLeavingAtomIds);
|
|
26735
27156
|
}
|
|
26736
27157
|
}
|
|
26737
27158
|
}
|
|
27159
|
+
if (_this8.canAssignRnaComponent(bond)) {
|
|
27160
|
+
_this8.autoAssignAtomToRnaComponent(id);
|
|
27161
|
+
}
|
|
26738
27162
|
};
|
|
26739
|
-
for (
|
|
26740
|
-
|
|
27163
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
27164
|
+
_loop4();
|
|
26741
27165
|
}
|
|
26742
27166
|
} catch (err) {
|
|
26743
|
-
|
|
27167
|
+
_iterator6.e(err);
|
|
26744
27168
|
} finally {
|
|
26745
|
-
|
|
27169
|
+
_iterator6.f();
|
|
26746
27170
|
}
|
|
26747
27171
|
break;
|
|
26748
27172
|
}
|
|
27173
|
+
case ketcherCore.OperationType.BOND_DELETE:
|
|
27174
|
+
{
|
|
27175
|
+
_this8.removeAtomsAndBondsFromRnaComponents([], _toConsumableArray__default["default"](ids.values()));
|
|
27176
|
+
break;
|
|
27177
|
+
}
|
|
26749
27178
|
default:
|
|
26750
27179
|
break;
|
|
26751
27180
|
}
|
|
26752
27181
|
};
|
|
26753
|
-
for (
|
|
26754
|
-
if (
|
|
27182
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
27183
|
+
if (_loop2()) continue;
|
|
26755
27184
|
}
|
|
26756
27185
|
} catch (err) {
|
|
26757
|
-
|
|
27186
|
+
_iterator4.e(err);
|
|
26758
27187
|
} finally {
|
|
26759
|
-
|
|
27188
|
+
_iterator4.f();
|
|
26760
27189
|
}
|
|
26761
27190
|
this.monomerCreationState = _objectSpread$V({}, this.monomerCreationState || {});
|
|
26762
27191
|
}
|
|
27192
|
+
}, {
|
|
27193
|
+
key: "setRnaMonomerCreationMode",
|
|
27194
|
+
value: function setRnaMonomerCreationMode(isActive) {
|
|
27195
|
+
if (!this.monomerCreationState) {
|
|
27196
|
+
ketcherCore.KetcherLogger.warn('Monomer creation state is not initialized');
|
|
27197
|
+
return;
|
|
27198
|
+
}
|
|
27199
|
+
this.monomerCreationState.isRnaPresetMode = isActive;
|
|
27200
|
+
}
|
|
26763
27201
|
}, {
|
|
26764
27202
|
key: "selection",
|
|
26765
27203
|
value: function selection(ci) {
|
|
@@ -26961,7 +27399,20 @@ var Editor$3 = function () {
|
|
|
26961
27399
|
}, {
|
|
26962
27400
|
key: "unsubscribe",
|
|
26963
27401
|
value: function unsubscribe(eventName, subscriber) {
|
|
26964
|
-
|
|
27402
|
+
switch (eventName) {
|
|
27403
|
+
case 'change':
|
|
27404
|
+
{
|
|
27405
|
+
ketcherCore.ketcherProvider.getKetcher(this.ketcherId).changeEvent.remove(subscriber.handler);
|
|
27406
|
+
break;
|
|
27407
|
+
}
|
|
27408
|
+
case 'libraryUpdate':
|
|
27409
|
+
{
|
|
27410
|
+
ketcherCore.ketcherProvider.getKetcher(this.ketcherId).libraryUpdateEvent.remove(subscriber.handler);
|
|
27411
|
+
break;
|
|
27412
|
+
}
|
|
27413
|
+
default:
|
|
27414
|
+
this.event[eventName].remove(subscriber.handler);
|
|
27415
|
+
}
|
|
26965
27416
|
}
|
|
26966
27417
|
}, {
|
|
26967
27418
|
key: "findItem",
|
|
@@ -27097,17 +27548,17 @@ var Editor$3 = function () {
|
|
|
27097
27548
|
return false;
|
|
27098
27549
|
}
|
|
27099
27550
|
var adjacencyList = new Map();
|
|
27100
|
-
var
|
|
27101
|
-
|
|
27551
|
+
var _iterator7 = _createForOfIteratorHelper$2(atomIds),
|
|
27552
|
+
_step7;
|
|
27102
27553
|
try {
|
|
27103
|
-
for (
|
|
27104
|
-
var atomId =
|
|
27554
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
27555
|
+
var atomId = _step7.value;
|
|
27105
27556
|
adjacencyList.set(atomId, []);
|
|
27106
27557
|
}
|
|
27107
27558
|
} catch (err) {
|
|
27108
|
-
|
|
27559
|
+
_iterator7.e(err);
|
|
27109
27560
|
} finally {
|
|
27110
|
-
|
|
27561
|
+
_iterator7.f();
|
|
27111
27562
|
}
|
|
27112
27563
|
bondIds.forEach(function (bondId) {
|
|
27113
27564
|
var bond = struct.bonds.get(bondId);
|
|
@@ -27129,19 +27580,19 @@ var Editor$3 = function () {
|
|
|
27129
27580
|
if (nextAtomId !== undefined && !visited.has(nextAtomId)) {
|
|
27130
27581
|
var _adjacencyList$get3;
|
|
27131
27582
|
visited.add(nextAtomId);
|
|
27132
|
-
var
|
|
27133
|
-
|
|
27583
|
+
var _iterator8 = _createForOfIteratorHelper$2((_adjacencyList$get3 = adjacencyList.get(nextAtomId)) !== null && _adjacencyList$get3 !== void 0 ? _adjacencyList$get3 : []),
|
|
27584
|
+
_step8;
|
|
27134
27585
|
try {
|
|
27135
|
-
for (
|
|
27136
|
-
var neighbor =
|
|
27586
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
27587
|
+
var neighbor = _step8.value;
|
|
27137
27588
|
if (!visited.has(neighbor)) {
|
|
27138
27589
|
queue.push(neighbor);
|
|
27139
27590
|
}
|
|
27140
27591
|
}
|
|
27141
27592
|
} catch (err) {
|
|
27142
|
-
|
|
27593
|
+
_iterator8.e(err);
|
|
27143
27594
|
} finally {
|
|
27144
|
-
|
|
27595
|
+
_iterator8.f();
|
|
27145
27596
|
}
|
|
27146
27597
|
}
|
|
27147
27598
|
}
|
|
@@ -27307,7 +27758,7 @@ function setHover(ci, visible, render) {
|
|
|
27307
27758
|
|
|
27308
27759
|
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
27760
|
|
|
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"};
|
|
27761
|
+
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
27762
|
|
|
27312
27763
|
var CONTEXT_MENU_ID;
|
|
27313
27764
|
(function (CONTEXT_MENU_ID) {
|
|
@@ -27477,6 +27928,116 @@ var useDelete$1 = function useDelete() {
|
|
|
27477
27928
|
return handler;
|
|
27478
27929
|
};
|
|
27479
27930
|
|
|
27931
|
+
var MonomerTypeSelectConfig = [{
|
|
27932
|
+
value: ketcherCore.KetMonomerClass.AminoAcid,
|
|
27933
|
+
label: 'Amino acid',
|
|
27934
|
+
iconName: 'peptide'
|
|
27935
|
+
}, {
|
|
27936
|
+
value: ketcherCore.KetMonomerClass.Sugar,
|
|
27937
|
+
label: 'Sugar',
|
|
27938
|
+
iconName: 'sugar'
|
|
27939
|
+
}, {
|
|
27940
|
+
value: ketcherCore.KetMonomerClass.Base,
|
|
27941
|
+
label: 'Base',
|
|
27942
|
+
iconName: 'base'
|
|
27943
|
+
}, {
|
|
27944
|
+
value: ketcherCore.KetMonomerClass.Phosphate,
|
|
27945
|
+
label: 'Phosphate',
|
|
27946
|
+
iconName: 'phosphate'
|
|
27947
|
+
}, {
|
|
27948
|
+
value: ketcherCore.KetMonomerClass.RNA,
|
|
27949
|
+
label: 'Nucleotide (monomer)',
|
|
27950
|
+
iconName: 'nucleotide'
|
|
27951
|
+
}, {
|
|
27952
|
+
value: 'rnaPreset',
|
|
27953
|
+
label: 'Nucleotide (preset)',
|
|
27954
|
+
iconName: 'preset'
|
|
27955
|
+
}, {
|
|
27956
|
+
value: ketcherCore.KetMonomerClass.CHEM,
|
|
27957
|
+
label: 'CHEM',
|
|
27958
|
+
iconName: 'chem'
|
|
27959
|
+
}];
|
|
27960
|
+
var MAX_MODIFICATION_TYPES = 5;
|
|
27961
|
+
var NotificationMessages = {
|
|
27962
|
+
defaultAttachmentPoints: 'Attachment points are set by default with hydrogens as leaving groups.',
|
|
27963
|
+
emptyMandatoryFields: 'Mandatory fields must be filled.',
|
|
27964
|
+
invalidSymbol: 'The monomer code must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
|
|
27965
|
+
symbolExists: 'The code must be unique amongst peptide, RNA, or CHEM monomers.',
|
|
27966
|
+
editingIsNotAllowed: 'Editing of the structure is not allowed.',
|
|
27967
|
+
noAttachmentPoints: 'The monomer must have at least one attachment point.',
|
|
27968
|
+
incorrectAttachmentPointsOrder: 'Attachment point numbers must be in order, but R1 and R2 may be skipped.',
|
|
27969
|
+
creationSuccessful: 'The monomer was successfully added to the library.',
|
|
27970
|
+
creationRNASuccessful: 'The preset was successfully added to the library.',
|
|
27971
|
+
incontinuousStructure: 'All monomers must have a continuous structure.',
|
|
27972
|
+
notUniqueModificationTypes: 'Only one amino acid within a natural analogue can have the same modification type.',
|
|
27973
|
+
modificationTypeExists: 'Only one amino acid within a natural analogue can have the same modification type.',
|
|
27974
|
+
notMinimalViableStructure: 'Minimal monomer structure is two atoms connected via a single bond.',
|
|
27975
|
+
impureStructure: 'Monomer structure cannot contain S-groups, R-groups, special atoms, or any other query properties.',
|
|
27976
|
+
invalidHELMAlias: 'The HELM alias must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).',
|
|
27977
|
+
notUniqueHELMAlias: 'The HELM alias must be unique amongst peptide or RNA monomers.',
|
|
27978
|
+
invalidRnaPresetStructure: 'Structure of rna preset component contains issues. Please adjust the structure.',
|
|
27979
|
+
notUniquePresetCode: 'The preset code must be unique amongst other presets.',
|
|
27980
|
+
invalidPresetCode: 'The preset code must consist only of uppercase and lowercase letters, numbers, hyphens (-), underscores (_), and asterisks (*).'
|
|
27981
|
+
};
|
|
27982
|
+
var NotificationTypes = {
|
|
27983
|
+
defaultAttachmentPoints: 'info',
|
|
27984
|
+
emptyMandatoryFields: 'error',
|
|
27985
|
+
invalidSymbol: 'error',
|
|
27986
|
+
symbolExists: 'error',
|
|
27987
|
+
editingIsNotAllowed: 'error',
|
|
27988
|
+
noAttachmentPoints: 'error',
|
|
27989
|
+
incorrectAttachmentPointsOrder: 'error',
|
|
27990
|
+
creationSuccessful: 'info',
|
|
27991
|
+
creationRNASuccessful: 'info',
|
|
27992
|
+
incontinuousStructure: 'error',
|
|
27993
|
+
notUniqueModificationTypes: 'error',
|
|
27994
|
+
modificationTypeExists: 'error',
|
|
27995
|
+
notMinimalViableStructure: 'error',
|
|
27996
|
+
impureStructure: 'error',
|
|
27997
|
+
invalidHELMAlias: 'error',
|
|
27998
|
+
notUniqueHELMAlias: 'error',
|
|
27999
|
+
invalidRnaPresetStructure: 'error',
|
|
28000
|
+
notUniquePresetCode: 'error',
|
|
28001
|
+
invalidPresetCode: 'error'
|
|
28002
|
+
};
|
|
28003
|
+
var MonomerCreationExternalNotificationAction = 'MonomerCreationExternalNotification';
|
|
28004
|
+
var MonomerCreationMarkAsComponentAction = 'MonomerCreationMarkAsComponent';
|
|
28005
|
+
|
|
28006
|
+
var useMarkAs = function useMarkAs() {
|
|
28007
|
+
var _useAppContext = useAppContext(),
|
|
28008
|
+
ketcherId = _useAppContext.ketcherId;
|
|
28009
|
+
var handler = React.useCallback(function (componentType) {
|
|
28010
|
+
return function (_params) {
|
|
28011
|
+
window.dispatchEvent(new CustomEvent(MonomerCreationMarkAsComponentAction, {
|
|
28012
|
+
detail: componentType
|
|
28013
|
+
}));
|
|
28014
|
+
};
|
|
28015
|
+
}, []);
|
|
28016
|
+
var isVisible = React.useCallback(function () {
|
|
28017
|
+
var editor = ketcherCore.ketcherProvider.getKetcher(ketcherId).editor;
|
|
28018
|
+
if (!editor.isMonomerCreationWizardActive) {
|
|
28019
|
+
return false;
|
|
28020
|
+
}
|
|
28021
|
+
var monomerCreationState = editor.monomerCreationState;
|
|
28022
|
+
return monomerCreationState === null || monomerCreationState === void 0 ? void 0 : monomerCreationState.isRnaPresetMode;
|
|
28023
|
+
}, [ketcherId]);
|
|
28024
|
+
var isDisabled = React.useCallback(function () {
|
|
28025
|
+
var editor = ketcherCore.ketcherProvider.getKetcher(ketcherId).editor;
|
|
28026
|
+
var selection = editor.selection();
|
|
28027
|
+
var struct = editor.struct();
|
|
28028
|
+
if (!(selection !== null && selection !== void 0 && selection.atoms) || selection.atoms.length === 0) {
|
|
28029
|
+
return true;
|
|
28030
|
+
}
|
|
28031
|
+
var isContinuous = Editor$3.isStructureContinuous(struct, selection);
|
|
28032
|
+
return !isContinuous;
|
|
28033
|
+
}, [ketcherId]);
|
|
28034
|
+
return {
|
|
28035
|
+
handler: handler,
|
|
28036
|
+
isVisible: isVisible,
|
|
28037
|
+
isDisabled: isDisabled
|
|
28038
|
+
};
|
|
28039
|
+
};
|
|
28040
|
+
|
|
27480
28041
|
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
28042
|
|
|
27482
28043
|
var BUTTON_HEIGHT = 28;
|
|
@@ -27840,6 +28401,10 @@ var AtomMenuItems = function AtomMenuItems(props) {
|
|
|
27840
28401
|
handleStereo = _useAtomStereo2[0],
|
|
27841
28402
|
stereoDisabled = _useAtomStereo2[1];
|
|
27842
28403
|
var handleDelete = useDelete$1();
|
|
28404
|
+
var _useMarkAs = useMarkAs(),
|
|
28405
|
+
handleMarkAs = _useMarkAs.handler,
|
|
28406
|
+
markAsIsVisible = _useMarkAs.isVisible,
|
|
28407
|
+
markAsIsDisabled = _useMarkAs.isDisabled;
|
|
27843
28408
|
var _useAppContext = useAppContext(),
|
|
27844
28409
|
ketcherId = _useAppContext.ketcherId;
|
|
27845
28410
|
var ketcher = ketcherCore.ketcherProvider.getKetcher(ketcherId);
|
|
@@ -27909,8 +28474,43 @@ var AtomMenuItems = function AtomMenuItems(props) {
|
|
|
27909
28474
|
}
|
|
27910
28475
|
var editMenuItemTitle = (_props$propsFromTrigg7 = props.propsFromTrigger) !== null && _props$propsFromTrigg7 !== void 0 && _props$propsFromTrigg7.extraItemsSelected ? 'Edit selected atoms...' : 'Edit...';
|
|
27911
28476
|
var disabledForMonomerCreation = editor.isMonomerCreationWizardActive;
|
|
28477
|
+
var showMarkAsMenu = markAsIsVisible();
|
|
28478
|
+
var markAsDisabled = markAsIsDisabled();
|
|
27912
28479
|
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
27913
|
-
children: [
|
|
28480
|
+
children: [showMarkAsMenu && jsxRuntime.jsxs(reactContexify.Submenu, _objectSpread$T(_objectSpread$T({}, props), {}, {
|
|
28481
|
+
"data-testid": "Mark as a...-option",
|
|
28482
|
+
label: "Mark as a...",
|
|
28483
|
+
disabled: markAsDisabled,
|
|
28484
|
+
className: styles$p.subMenu,
|
|
28485
|
+
children: [jsxRuntime.jsxs(reactContexify.Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
|
|
28486
|
+
"data-testid": "Mark as Base-option",
|
|
28487
|
+
onClick: handleMarkAs('base'),
|
|
28488
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
28489
|
+
name: "base",
|
|
28490
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
28491
|
+
}), jsxRuntime.jsx("span", {
|
|
28492
|
+
children: "Base"
|
|
28493
|
+
})]
|
|
28494
|
+
})), jsxRuntime.jsxs(reactContexify.Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
|
|
28495
|
+
"data-testid": "Mark as Sugar-option",
|
|
28496
|
+
onClick: handleMarkAs('sugar'),
|
|
28497
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
28498
|
+
name: "sugar",
|
|
28499
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
28500
|
+
}), jsxRuntime.jsx("span", {
|
|
28501
|
+
children: "Sugar"
|
|
28502
|
+
})]
|
|
28503
|
+
})), jsxRuntime.jsxs(reactContexify.Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
|
|
28504
|
+
"data-testid": "Mark as Phosphate-option",
|
|
28505
|
+
onClick: handleMarkAs('phosphate'),
|
|
28506
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
28507
|
+
name: "phosphate",
|
|
28508
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
28509
|
+
}), jsxRuntime.jsx("span", {
|
|
28510
|
+
children: "Phosphate"
|
|
28511
|
+
})]
|
|
28512
|
+
}))]
|
|
28513
|
+
})), makeAttachmentPointMenuItems && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
27914
28514
|
children: [makeAttachmentPointMenuItems, jsxRuntime.jsx(reactContexify.Separator, {})]
|
|
27915
28515
|
}), jsxRuntime.jsxs(reactContexify.Item, _objectSpread$T(_objectSpread$T({}, props), {}, {
|
|
27916
28516
|
"data-testid": editMenuItemTitle.concat('-option'),
|
|
@@ -28466,6 +29066,10 @@ var SelectionMenuItems = function SelectionMenuItems(props) {
|
|
|
28466
29066
|
_useCreateMonomer2 = _slicedToArray__default["default"](_useCreateMonomer, 2),
|
|
28467
29067
|
handleCreateMonomer = _useCreateMonomer2[0],
|
|
28468
29068
|
createMonomerDisabled = _useCreateMonomer2[1];
|
|
29069
|
+
var _useMarkAs = useMarkAs(),
|
|
29070
|
+
handleMarkAs = _useMarkAs.handler,
|
|
29071
|
+
markAsIsVisible = _useMarkAs.isVisible,
|
|
29072
|
+
markAsIsDisabled = _useMarkAs.isDisabled;
|
|
28469
29073
|
var highlightBondWithColor = function highlightBondWithColor(color) {
|
|
28470
29074
|
var _props$propsFromTrigg, _props$propsFromTrigg2, _props$propsFromTrigg3;
|
|
28471
29075
|
var bondIds = ((_props$propsFromTrigg = props.propsFromTrigger) === null || _props$propsFromTrigg === void 0 ? void 0 : _props$propsFromTrigg.bondIds) || [];
|
|
@@ -28479,8 +29083,43 @@ var SelectionMenuItems = function SelectionMenuItems(props) {
|
|
|
28479
29083
|
});
|
|
28480
29084
|
};
|
|
28481
29085
|
var options = reactRedux.useSelector(optionsSelector);
|
|
29086
|
+
var showMarkAsMenu = markAsIsVisible();
|
|
29087
|
+
var markAsDisabled = markAsIsDisabled();
|
|
28482
29088
|
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
28483
|
-
children: [jsxRuntime.
|
|
29089
|
+
children: [showMarkAsMenu && jsxRuntime.jsxs(reactContexify.Submenu, _objectSpread$P(_objectSpread$P({}, props), {}, {
|
|
29090
|
+
"data-testid": "Mark as a...-option",
|
|
29091
|
+
label: "Mark as a...",
|
|
29092
|
+
disabled: markAsDisabled,
|
|
29093
|
+
className: styles$p.subMenu,
|
|
29094
|
+
children: [jsxRuntime.jsxs(reactContexify.Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
|
|
29095
|
+
"data-testid": "Mark as Base-option",
|
|
29096
|
+
onClick: handleMarkAs('base'),
|
|
29097
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
29098
|
+
name: "base",
|
|
29099
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
29100
|
+
}), jsxRuntime.jsx("span", {
|
|
29101
|
+
children: "Base"
|
|
29102
|
+
})]
|
|
29103
|
+
})), jsxRuntime.jsxs(reactContexify.Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
|
|
29104
|
+
"data-testid": "Mark as Sugar-option",
|
|
29105
|
+
onClick: handleMarkAs('sugar'),
|
|
29106
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
29107
|
+
name: "sugar",
|
|
29108
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
29109
|
+
}), jsxRuntime.jsx("span", {
|
|
29110
|
+
children: "Sugar"
|
|
29111
|
+
})]
|
|
29112
|
+
})), jsxRuntime.jsxs(reactContexify.Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
|
|
29113
|
+
"data-testid": "Mark as Phosphate-option",
|
|
29114
|
+
onClick: handleMarkAs('phosphate'),
|
|
29115
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
29116
|
+
name: "phosphate",
|
|
29117
|
+
className: clsx__default["default"](styles$p.icon, styles$p.markAsComponentIcon)
|
|
29118
|
+
}), jsxRuntime.jsx("span", {
|
|
29119
|
+
children: "Phosphate"
|
|
29120
|
+
})]
|
|
29121
|
+
}))]
|
|
29122
|
+
})), jsxRuntime.jsx(reactContexify.Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
|
|
28484
29123
|
"data-testid": "Edit selected bonds...-option",
|
|
28485
29124
|
disabled: bondEditDisabled,
|
|
28486
29125
|
onClick: handleBondEdit,
|
|
@@ -30165,78 +30804,6 @@ var AttachmentPointEditPopup = function AttachmentPointEditPopup(_ref) {
|
|
|
30165
30804
|
});
|
|
30166
30805
|
};
|
|
30167
30806
|
|
|
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
30807
|
var MONOMER_VALIDATION_RULES = [{
|
|
30241
30808
|
monomerType: ketcherCore.KetMonomerClass.AminoAcid,
|
|
30242
30809
|
requirements: [{
|
|
@@ -30845,13 +31412,17 @@ var RnaPresetTabs = function RnaPresetTabs(props) {
|
|
|
30845
31412
|
editor: editor
|
|
30846
31413
|
});
|
|
30847
31414
|
};
|
|
30848
|
-
var handleClickCreateComponent = function
|
|
31415
|
+
var handleClickCreateComponent = React.useCallback(function (rnaComponentKey) {
|
|
31416
|
+
var selection = editor.selection();
|
|
31417
|
+
var atomIds = (selection === null || selection === void 0 ? void 0 : selection.atoms) || [];
|
|
31418
|
+
var bondIds = (selection === null || selection === void 0 ? void 0 : selection.bonds) || [];
|
|
30849
31419
|
wizardStateDispatch({
|
|
30850
31420
|
type: 'SetRnaPresetComponentStructure',
|
|
30851
31421
|
rnaComponentKey: rnaComponentKey,
|
|
30852
31422
|
editor: editor
|
|
30853
31423
|
});
|
|
30854
|
-
|
|
31424
|
+
editor.setRnaComponentAtoms(rnaComponentKey, atomIds, bondIds);
|
|
31425
|
+
}, [editor, wizardStateDispatch]);
|
|
30855
31426
|
var currentTabStructure = currentTabState === null || currentTabState === void 0 ? void 0 : currentTabState.structure;
|
|
30856
31427
|
React.useEffect(function () {
|
|
30857
31428
|
if (!currentTabStructure) {
|
|
@@ -30860,6 +31431,24 @@ var RnaPresetTabs = function RnaPresetTabs(props) {
|
|
|
30860
31431
|
applyHighlights(selectedTab, isHighlightEnabled);
|
|
30861
31432
|
editor.selection(null);
|
|
30862
31433
|
}, [applyHighlights, currentTabStructure, editor, isHighlightEnabled, selectedTab]);
|
|
31434
|
+
React.useEffect(function () {
|
|
31435
|
+
return function () {
|
|
31436
|
+
editor === null || editor === void 0 || editor.highlights.clear();
|
|
31437
|
+
};
|
|
31438
|
+
}, [editor === null || editor === void 0 ? void 0 : editor.highlights]);
|
|
31439
|
+
React.useEffect(function () {
|
|
31440
|
+
var handleMarkAsComponent = function handleMarkAsComponent(event) {
|
|
31441
|
+
var componentType = event.detail;
|
|
31442
|
+
var tabIndex = RNA_COMPONENT_KEYS.indexOf(componentType) + 1;
|
|
31443
|
+
handleClickCreateComponent(componentType);
|
|
31444
|
+
setSelectedTab(tabIndex);
|
|
31445
|
+
applyHighlights(selectedTab, isHighlightEnabled);
|
|
31446
|
+
};
|
|
31447
|
+
window.addEventListener(MonomerCreationMarkAsComponentAction, handleMarkAsComponent);
|
|
31448
|
+
return function () {
|
|
31449
|
+
window.removeEventListener(MonomerCreationMarkAsComponentAction, handleMarkAsComponent);
|
|
31450
|
+
};
|
|
31451
|
+
}, [wizardState, handleClickCreateComponent, applyHighlights, selectedTab, isHighlightEnabled]);
|
|
30863
31452
|
var hasErrorInTab = function hasErrorInTab(wizardState) {
|
|
30864
31453
|
return Object.values(wizardState.errors).some(function (errorValue) {
|
|
30865
31454
|
return Boolean(errorValue);
|
|
@@ -31001,6 +31590,18 @@ var initialRnaPresetWizardState = {
|
|
|
31001
31590
|
}
|
|
31002
31591
|
}
|
|
31003
31592
|
};
|
|
31593
|
+
var getComponentSuffix = function getComponentSuffix(componentType) {
|
|
31594
|
+
switch (componentType) {
|
|
31595
|
+
case ketcherCore.KetMonomerClass.Base:
|
|
31596
|
+
return 'B';
|
|
31597
|
+
case ketcherCore.KetMonomerClass.Sugar:
|
|
31598
|
+
return 'S';
|
|
31599
|
+
case ketcherCore.KetMonomerClass.Phosphate:
|
|
31600
|
+
return 'P';
|
|
31601
|
+
default:
|
|
31602
|
+
return '';
|
|
31603
|
+
}
|
|
31604
|
+
};
|
|
31004
31605
|
var wizardReducer = function wizardReducer(state, action) {
|
|
31005
31606
|
switch (action.type) {
|
|
31006
31607
|
case 'SetFieldValue':
|
|
@@ -31102,6 +31703,14 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
|
|
|
31102
31703
|
if (!action.rnaComponentKey) {
|
|
31103
31704
|
return state;
|
|
31104
31705
|
}
|
|
31706
|
+
if (action.type === 'UpdateRnaPresetComponentStructure') {
|
|
31707
|
+
return _objectSpread$G(_objectSpread$G({}, state), {}, _defineProperty__default["default"]({}, action.rnaComponentKey, _objectSpread$G(_objectSpread$G({}, state[action.rnaComponentKey]), {}, {
|
|
31708
|
+
structure: {
|
|
31709
|
+
atoms: action.atomIds,
|
|
31710
|
+
bonds: action.bondIds
|
|
31711
|
+
}
|
|
31712
|
+
})));
|
|
31713
|
+
}
|
|
31105
31714
|
var rnaComponentKey = action.rnaComponentKey,
|
|
31106
31715
|
restAction = _objectWithoutProperties__default["default"](action, _excluded$o);
|
|
31107
31716
|
if (action.type === 'SetNotifications') {
|
|
@@ -31144,7 +31753,7 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
|
|
|
31144
31753
|
_updatedState = _objectSpread$G(_objectSpread$G({}, _updatedState), {}, {
|
|
31145
31754
|
base: _objectSpread$G(_objectSpread$G({}, _updatedState.base), {}, {
|
|
31146
31755
|
values: _objectSpread$G(_objectSpread$G({}, _updatedState.base.values), {}, {
|
|
31147
|
-
symbol: newPresetCode
|
|
31756
|
+
symbol: newPresetCode ? newPresetCode + getComponentSuffix(ketcherCore.KetMonomerClass.Base) : ''
|
|
31148
31757
|
})
|
|
31149
31758
|
})
|
|
31150
31759
|
});
|
|
@@ -31153,7 +31762,7 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
|
|
|
31153
31762
|
_updatedState = _objectSpread$G(_objectSpread$G({}, _updatedState), {}, {
|
|
31154
31763
|
sugar: _objectSpread$G(_objectSpread$G({}, _updatedState.sugar), {}, {
|
|
31155
31764
|
values: _objectSpread$G(_objectSpread$G({}, _updatedState.sugar.values), {}, {
|
|
31156
|
-
symbol: newPresetCode
|
|
31765
|
+
symbol: newPresetCode ? newPresetCode + getComponentSuffix(ketcherCore.KetMonomerClass.Sugar) : ''
|
|
31157
31766
|
})
|
|
31158
31767
|
})
|
|
31159
31768
|
});
|
|
@@ -31162,7 +31771,7 @@ var rnaPresetWizardReducer = function rnaPresetWizardReducer(state, action) {
|
|
|
31162
31771
|
_updatedState = _objectSpread$G(_objectSpread$G({}, _updatedState), {}, {
|
|
31163
31772
|
phosphate: _objectSpread$G(_objectSpread$G({}, _updatedState.phosphate), {}, {
|
|
31164
31773
|
values: _objectSpread$G(_objectSpread$G({}, _updatedState.phosphate.values), {}, {
|
|
31165
|
-
symbol: newPresetCode
|
|
31774
|
+
symbol: newPresetCode ? newPresetCode + getComponentSuffix(ketcherCore.KetMonomerClass.Phosphate) : ''
|
|
31166
31775
|
})
|
|
31167
31776
|
})
|
|
31168
31777
|
});
|
|
@@ -31184,18 +31793,6 @@ var hasAllMandatoryPropertiesFilled = function hasAllMandatoryPropertiesFilled(v
|
|
|
31184
31793
|
}
|
|
31185
31794
|
return true;
|
|
31186
31795
|
};
|
|
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
31796
|
var getLeavingAtomForAttachmentPoint = function getLeavingAtomForAttachmentPoint(componentType, attachmentPointName) {
|
|
31200
31797
|
switch (componentType) {
|
|
31201
31798
|
case ketcherCore.KetMonomerClass.Base:
|
|
@@ -31432,6 +32029,14 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
31432
32029
|
_useState6 = _slicedToArray__default["default"](_useState5, 2),
|
|
31433
32030
|
leavingGroupDialogMessage = _useState6[0],
|
|
31434
32031
|
setLeavingGroupDialogMessage = _useState6[1];
|
|
32032
|
+
var _useState7 = React.useState(null),
|
|
32033
|
+
_useState8 = _slicedToArray__default["default"](_useState7, 2),
|
|
32034
|
+
pendingType = _useState8[0],
|
|
32035
|
+
setPendingType = _useState8[1];
|
|
32036
|
+
var _useState9 = React.useState(false),
|
|
32037
|
+
_useState10 = _slicedToArray__default["default"](_useState9, 2),
|
|
32038
|
+
showTypeChangeDialog = _useState10[0],
|
|
32039
|
+
setShowTypeChangeDialog = _useState10[1];
|
|
31435
32040
|
var isRnaPresetType = type === 'rnaPreset';
|
|
31436
32041
|
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
32042
|
React.useEffect(function () {
|
|
@@ -31464,37 +32069,71 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
31464
32069
|
window.removeEventListener(ketcherCore.MonomerCreationAttachmentPointClickEvent, attachmentPointClickHandler);
|
|
31465
32070
|
};
|
|
31466
32071
|
}, []);
|
|
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
|
-
});
|
|
32072
|
+
React.useEffect(function () {
|
|
32073
|
+
var isValidRnaComponentKey = function isValidRnaComponentKey(key) {
|
|
32074
|
+
return key === 'base' || key === 'sugar' || key === 'phosphate';
|
|
32075
|
+
};
|
|
32076
|
+
var componentStructureUpdateHandler = function componentStructureUpdateHandler(event) {
|
|
32077
|
+
var updateData = event.detail;
|
|
32078
|
+
var componentKey = updateData.componentKey,
|
|
32079
|
+
atomIds = updateData.atomIds,
|
|
32080
|
+
bondIds = updateData.bondIds;
|
|
32081
|
+
if (!isValidRnaComponentKey(componentKey)) {
|
|
32082
|
+
return;
|
|
31485
32083
|
}
|
|
32084
|
+
rnaPresetWizardStateDispatch({
|
|
32085
|
+
type: 'UpdateRnaPresetComponentStructure',
|
|
32086
|
+
rnaComponentKey: componentKey,
|
|
32087
|
+
atomIds: atomIds,
|
|
32088
|
+
bondIds: bondIds
|
|
32089
|
+
});
|
|
32090
|
+
};
|
|
32091
|
+
window.addEventListener(ketcherCore.MonomerCreationComponentStructureUpdateEvent, componentStructureUpdateHandler);
|
|
32092
|
+
return function () {
|
|
32093
|
+
window.removeEventListener(ketcherCore.MonomerCreationComponentStructureUpdateEvent, componentStructureUpdateHandler);
|
|
32094
|
+
};
|
|
32095
|
+
}, []);
|
|
32096
|
+
var applyTypeChange = function applyTypeChange(newType) {
|
|
32097
|
+
setModificationTypes([]);
|
|
32098
|
+
if ((type === 'rnaPreset' || newType === 'rnaPreset') && type !== newType) {
|
|
32099
|
+
wizardStateDispatch({
|
|
32100
|
+
type: 'ResetWizard'
|
|
32101
|
+
});
|
|
32102
|
+
rnaPresetWizardStateDispatch({
|
|
32103
|
+
type: 'ResetWizard'
|
|
32104
|
+
});
|
|
32105
|
+
} else {
|
|
31486
32106
|
wizardStateDispatch({
|
|
31487
32107
|
type: 'SetFieldValue',
|
|
31488
|
-
fieldId: '
|
|
31489
|
-
value:
|
|
32108
|
+
fieldId: 'aliasHELM',
|
|
32109
|
+
value: ''
|
|
31490
32110
|
});
|
|
32111
|
+
}
|
|
32112
|
+
wizardStateDispatch({
|
|
32113
|
+
type: 'SetFieldValue',
|
|
32114
|
+
fieldId: 'type',
|
|
32115
|
+
value: newType
|
|
32116
|
+
});
|
|
32117
|
+
};
|
|
32118
|
+
var handleFieldChange = function handleFieldChange(fieldId, value) {
|
|
32119
|
+
if (fieldId === 'type') {
|
|
32120
|
+
if (type === 'rnaPreset' && value !== 'rnaPreset') {
|
|
32121
|
+
setPendingType(value);
|
|
32122
|
+
setShowTypeChangeDialog(true);
|
|
32123
|
+
return;
|
|
32124
|
+
}
|
|
32125
|
+
applyTypeChange(value);
|
|
31491
32126
|
} else {
|
|
32127
|
+
if (fieldId === 'naturalAnalogue') {
|
|
32128
|
+
setModificationTypes([]);
|
|
32129
|
+
}
|
|
31492
32130
|
wizardStateDispatch({
|
|
31493
32131
|
type: 'SetFieldValue',
|
|
31494
32132
|
fieldId: fieldId,
|
|
31495
32133
|
value: value
|
|
31496
32134
|
});
|
|
31497
32135
|
}
|
|
32136
|
+
editor.setRnaMonomerCreationMode(value === 'rnaPreset');
|
|
31498
32137
|
};
|
|
31499
32138
|
React.useEffect(function () {
|
|
31500
32139
|
var _editor$setMonomerCre;
|
|
@@ -31849,14 +32488,18 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
31849
32488
|
});
|
|
31850
32489
|
var bondBetweenSugarAndBase = _toConsumableArray__default["default"](bondsBetweenSugarAndBase.values())[0];
|
|
31851
32490
|
var bondBetweenSugarAndPhosphate = _toConsumableArray__default["default"](bondsBetweenSugarAndPhosphate.values())[0];
|
|
31852
|
-
var
|
|
31853
|
-
var
|
|
31854
|
-
var
|
|
31855
|
-
var
|
|
31856
|
-
|
|
31857
|
-
|
|
31858
|
-
|
|
31859
|
-
|
|
32491
|
+
var sugarR3AttachmentPointAtomId = sugarStructure !== null && sugarStructure !== void 0 && (_sugarStructure$atoms5 = sugarStructure.atoms) !== null && _sugarStructure$atoms5 !== void 0 && _sugarStructure$atoms5.includes(bondBetweenSugarAndBase.begin) ? bondBetweenSugarAndBase.begin : bondBetweenSugarAndBase.end;
|
|
32492
|
+
var sugarR3AttachmentAtom = struct.atoms.get(sugarR3AttachmentPointAtomId);
|
|
32493
|
+
var sugarR2AttachmentPointAtomId = sugarStructure !== null && sugarStructure !== void 0 && (_sugarStructure$atoms6 = sugarStructure.atoms) !== null && _sugarStructure$atoms6 !== void 0 && _sugarStructure$atoms6.includes(bondBetweenSugarAndPhosphate.begin) ? bondBetweenSugarAndPhosphate.begin : bondBetweenSugarAndPhosphate.end;
|
|
32494
|
+
var sugarR2AttachmentAtom = struct.atoms.get(sugarR2AttachmentPointAtomId);
|
|
32495
|
+
var baseR1AttachmentPointAtomId = baseStructure !== null && baseStructure !== void 0 && (_baseStructure$atoms3 = baseStructure.atoms) !== null && _baseStructure$atoms3 !== void 0 && _baseStructure$atoms3.includes(bondBetweenSugarAndBase.begin) ? bondBetweenSugarAndBase.begin : bondBetweenSugarAndBase.end;
|
|
32496
|
+
var baseR1AttachmentAtom = struct.atoms.get(baseR1AttachmentPointAtomId);
|
|
32497
|
+
var phosphateR1AttachmentPointAtomId = phosphateStructure !== null && phosphateStructure !== void 0 && (_phosphateStructure$a3 = phosphateStructure.atoms) !== null && _phosphateStructure$a3 !== void 0 && _phosphateStructure$a3.includes(bondBetweenSugarAndPhosphate.begin) ? bondBetweenSugarAndPhosphate.begin : bondBetweenSugarAndPhosphate.end;
|
|
32498
|
+
var phosphateR1AttachmentAtom = struct.atoms.get(phosphateR1AttachmentPointAtomId);
|
|
32499
|
+
editor.assignConnectionPointAtom(baseR1AttachmentPointAtomId, ketcherCore.AttachmentPointName.R1, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.base), rnaPresetWizardState.base.structure, true, getLeavingAtomForAttachmentPoint(ketcherCore.KetMonomerClass.Base, ketcherCore.AttachmentPointName.R1), sugarR3AttachmentAtom === null || sugarR3AttachmentAtom === void 0 ? void 0 : sugarR3AttachmentAtom.pp);
|
|
32500
|
+
editor.assignConnectionPointAtom(sugarR2AttachmentPointAtomId, ketcherCore.AttachmentPointName.R2, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.sugar), rnaPresetWizardState.sugar.structure, true, getLeavingAtomForAttachmentPoint(ketcherCore.KetMonomerClass.Sugar, ketcherCore.AttachmentPointName.R2), phosphateR1AttachmentAtom === null || phosphateR1AttachmentAtom === void 0 ? void 0 : phosphateR1AttachmentAtom.pp);
|
|
32501
|
+
editor.assignConnectionPointAtom(sugarR3AttachmentPointAtomId, ketcherCore.AttachmentPointName.R3, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.sugar), rnaPresetWizardState.sugar.structure, true, getLeavingAtomForAttachmentPoint(ketcherCore.KetMonomerClass.Sugar, ketcherCore.AttachmentPointName.R3), baseR1AttachmentAtom === null || baseR1AttachmentAtom === void 0 ? void 0 : baseR1AttachmentAtom.pp);
|
|
32502
|
+
editor.assignConnectionPointAtom(phosphateR1AttachmentPointAtomId, ketcherCore.AttachmentPointName.R1, assignedAttachmentPointsByMonomer.get(rnaPresetWizardState.phosphate), rnaPresetWizardState.phosphate.structure, true, getLeavingAtomForAttachmentPoint(ketcherCore.KetMonomerClass.Phosphate, ketcherCore.AttachmentPointName.R1), sugarR2AttachmentAtom === null || sugarR2AttachmentAtom === void 0 ? void 0 : sugarR2AttachmentAtom.pp);
|
|
31860
32503
|
}
|
|
31861
32504
|
monomersToSave.forEach(function (monomerToSave) {
|
|
31862
32505
|
var atomIdMap = new Map();
|
|
@@ -31874,7 +32517,7 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
31874
32517
|
}
|
|
31875
32518
|
monomerAssignedAttachmentPoints.set(attachmentPointKey, [mappedAttachmentAtomId, mappedLeavingGroupAtomId]);
|
|
31876
32519
|
});
|
|
31877
|
-
var shouldBeHidden = isRnaPresetType
|
|
32520
|
+
var shouldBeHidden = isRnaPresetType;
|
|
31878
32521
|
var valuesToSave = monomerToSave.values;
|
|
31879
32522
|
if (shouldBeHidden) {
|
|
31880
32523
|
valuesToSave = autoAssignPropertiesForHiddenMonomer(monomerToSave.values, rnaPresetWizardState.preset.name);
|
|
@@ -31898,6 +32541,7 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
31898
32541
|
editor.finishNewMonomersCreation(monomersData, rnaPresetWizardState.preset.name);
|
|
31899
32542
|
dispatch(onAction(selectRectangleAction));
|
|
31900
32543
|
resetWizard();
|
|
32544
|
+
dispatch(showSnackbarNotification(isRnaPresetType ? NotificationMessages.creationRNASuccessful : NotificationMessages.creationSuccessful));
|
|
31901
32545
|
}
|
|
31902
32546
|
};
|
|
31903
32547
|
var ketcherEditorRootElement = document.querySelector(KETCHER_ROOT_NODE_CSS_SELECTOR);
|
|
@@ -31986,7 +32630,40 @@ var MonomerCreationWizard = function MonomerCreationWizard() {
|
|
|
31986
32630
|
children: "Submit"
|
|
31987
32631
|
})]
|
|
31988
32632
|
})]
|
|
31989
|
-
}),
|
|
32633
|
+
}), showTypeChangeDialog && ketcherEditorRootElement && ReactDOM.createPortal(jsxRuntime.jsx("div", {
|
|
32634
|
+
className: styles$o.dialogOverlay,
|
|
32635
|
+
children: jsxRuntime.jsx(Dialog, {
|
|
32636
|
+
className: styles$o.smallDialog,
|
|
32637
|
+
title: "Confirm type change",
|
|
32638
|
+
withDivider: true,
|
|
32639
|
+
valid: function valid() {
|
|
32640
|
+
return true;
|
|
32641
|
+
},
|
|
32642
|
+
params: {
|
|
32643
|
+
onOk: function onOk() {
|
|
32644
|
+
if (pendingType !== null) {
|
|
32645
|
+
applyTypeChange(pendingType);
|
|
32646
|
+
}
|
|
32647
|
+
setPendingType(null);
|
|
32648
|
+
setShowTypeChangeDialog(false);
|
|
32649
|
+
},
|
|
32650
|
+
onCancel: function onCancel() {
|
|
32651
|
+
setPendingType(null);
|
|
32652
|
+
setShowTypeChangeDialog(false);
|
|
32653
|
+
}
|
|
32654
|
+
},
|
|
32655
|
+
buttons: ['OK', 'Cancel'],
|
|
32656
|
+
buttonsNameMap: {
|
|
32657
|
+
OK: 'Yes',
|
|
32658
|
+
Cancel: 'Cancel'
|
|
32659
|
+
},
|
|
32660
|
+
primaryButtons: ['Cancel'],
|
|
32661
|
+
children: jsxRuntime.jsx("div", {
|
|
32662
|
+
className: styles$o.DialogMessage,
|
|
32663
|
+
children: "Changing the type will result in a loss of inputted data. Do you wish to proceed?"
|
|
32664
|
+
})
|
|
32665
|
+
})
|
|
32666
|
+
}), ketcherEditorRootElement), leavingGroupDialogMessage && ketcherEditorRootElement && ReactDOM.createPortal(jsxRuntime.jsx("div", {
|
|
31990
32667
|
className: styles$o.dialogOverlay,
|
|
31991
32668
|
children: jsxRuntime.jsx(Dialog, {
|
|
31992
32669
|
className: styles$o.smallDialog,
|
|
@@ -39764,7 +40441,7 @@ var Editor$1 = reactRedux.connect(function (state) {
|
|
|
39764
40441
|
};
|
|
39765
40442
|
}, mapDispatchToProps$1)(StructEditor);
|
|
39766
40443
|
|
|
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"};
|
|
40444
|
+
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
40445
|
|
|
39769
40446
|
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
40447
|
|
|
@@ -40064,10 +40741,16 @@ var muiTheme = material.createTheme({
|
|
|
40064
40741
|
var App = function App(props) {
|
|
40065
40742
|
var dispatch = useAppDispatch();
|
|
40066
40743
|
var checkServer = props.checkServer;
|
|
40744
|
+
var snackbarNotificationText = reactRedux.useSelector(selectSnackbarNotificationText);
|
|
40067
40745
|
useSubscriptionOnEvents();
|
|
40068
40746
|
var _useAppContext = useAppContext(),
|
|
40069
40747
|
ketcherId = _useAppContext.ketcherId,
|
|
40070
40748
|
prevKetcherId = _useAppContext.prevKetcherId;
|
|
40749
|
+
var handleCloseSnackbarNotification = React.useCallback(function () {
|
|
40750
|
+
dispatch({
|
|
40751
|
+
type: 'HIDE_SNACKBAR_NOTIFICATION'
|
|
40752
|
+
});
|
|
40753
|
+
}, [dispatch]);
|
|
40071
40754
|
React.useEffect(function () {
|
|
40072
40755
|
checkServer();
|
|
40073
40756
|
dispatch(initFGTemplates());
|
|
@@ -40100,7 +40783,26 @@ var App = function App(props) {
|
|
|
40100
40783
|
}),
|
|
40101
40784
|
jsxRuntime.jsx(AppClipArea, {}), jsxRuntime.jsx(ModalContainer, {
|
|
40102
40785
|
ketcherId: ketcherId
|
|
40103
|
-
}), jsxRuntime.jsx(AbbreviationLookupContainer, {})
|
|
40786
|
+
}), jsxRuntime.jsx(AbbreviationLookupContainer, {}), jsxRuntime.jsx(material.Snackbar, {
|
|
40787
|
+
anchorOrigin: {
|
|
40788
|
+
vertical: 'bottom',
|
|
40789
|
+
horizontal: 'center'
|
|
40790
|
+
},
|
|
40791
|
+
open: Boolean(snackbarNotificationText),
|
|
40792
|
+
onClose: handleCloseSnackbarNotification,
|
|
40793
|
+
autoHideDuration: 6000,
|
|
40794
|
+
children: jsxRuntime.jsxs("div", {
|
|
40795
|
+
className: classes$1.toastNotification,
|
|
40796
|
+
children: [jsxRuntime.jsx("div", {
|
|
40797
|
+
className: classes$1.toastNotificationText,
|
|
40798
|
+
children: snackbarNotificationText
|
|
40799
|
+
}), jsxRuntime.jsx(IconButton, {
|
|
40800
|
+
iconName: "close",
|
|
40801
|
+
className: classes$1.toastNotificationCloseIcon,
|
|
40802
|
+
onClick: handleCloseSnackbarNotification
|
|
40803
|
+
})]
|
|
40804
|
+
})
|
|
40805
|
+
})]
|
|
40104
40806
|
})
|
|
40105
40807
|
});
|
|
40106
40808
|
};
|
|
@@ -40279,8 +40981,8 @@ var KetcherBuilder = function () {
|
|
|
40279
40981
|
cleanup = initApp(prevKetcherId, ketcherId, element, appRoot, staticResourcesUrl, {
|
|
40280
40982
|
buttons: buttons || {},
|
|
40281
40983
|
errorHandler: errorHandler || null,
|
|
40282
|
-
version: "3.12.0-
|
|
40283
|
-
buildDate: "
|
|
40984
|
+
version: "3.12.0-rc.2" ,
|
|
40985
|
+
buildDate: "2026-01-27T21:17:45" ,
|
|
40284
40986
|
buildNumber: '',
|
|
40285
40987
|
customButtons: customButtons || []
|
|
40286
40988
|
}, structService, resolve, togglerComponent);
|
|
@@ -40581,7 +41283,7 @@ var ModeControl = function ModeControl(_ref3) {
|
|
|
40581
41283
|
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
41284
|
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
41285
|
var MacromoleculesEditorComponent = React.lazy(function () {
|
|
40584
|
-
return Promise.resolve().then(function () { return require('./index.modern-
|
|
41286
|
+
return Promise.resolve().then(function () { return require('./index.modern-0386b391.js'); });
|
|
40585
41287
|
});
|
|
40586
41288
|
var Editor = function Editor(props) {
|
|
40587
41289
|
var _useState = React.useState(false),
|