public int setProjectionFromConfig(final String config, final int startIdx) {
        if (config == null || startIdx < 0 || startIdx >= config.length()) {
            return -1;
        }
        final String configToUse = config.substring(startIdx).trim();
        if (!configToUse.startsWith("{" + WP_PROJECTION_CONFIG_KEY + "|")) {
            return -1;
        }

        final TextParser tp = new TextParser(config);
        tp.parseUntil('|');
        final List<String> tokens = tp.splitUntil(c -> c == '}', c -> c == '|', false, '\\', false);
        this.projectionType = !tokens.isEmpty() ? EnumUtils.getEnum(ProjectionType.class, tokens.get(0), ProjectionType.NO_PROJECTION) : ProjectionType.NO_PROJECTION;
        this.projectionFormula1 = tokens.size() > 1 ? tokens.get(1) : "";
        this.projectionFormula2 = tokens.size() > 2 ? tokens.get(2) : "";
        this.projectionDistanceUnit = tokens.size() > 3 ? EnumUtils.getEnum(DistanceUnit.class, tokens.get(3), DistanceUnit.getDefaultUnit(false)) : DistanceUnit.getDefaultUnit(false);
        return tp.pos() + startIdx;
    }
tries to retrieve waypoint id from clipboard
returns the id, or -1 if no waypoint (with internal prefix) found
main/src/main/java/cgeo/geocaching/models/Waypoint.java