Commit 700cd943 authored by Christoffer Ackelman's avatar Christoffer Ackelman

Fixed Doxygen issue with license.

parent 08ab3530
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
......@@ -186,7 +186,7 @@ ALIASES =
# For instance, some of the names that are used will be different. The list
# of all members will be omitted, etc.
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_FOR_C = YES
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
# sources only. Doxygen will then generate output that is more tailored for
......@@ -282,17 +282,17 @@ TYPEDEF_HIDES_STRUCT = NO
# Private class members and static file members will be hidden unless
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
EXTRACT_ALL = NO
EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
EXTRACT_PRIVATE = NO
EXTRACT_PRIVATE = YES
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
EXTRACT_STATIC = NO
EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
......@@ -560,30 +560,11 @@ WARN_LOGFILE =
# with spaces.
INPUT = $(pwre_sroot)/doc/prm/src/doxygen.dx \
$(pwre_sroot)/exp/inc/src/pwr.h \
$(pwre_sroot)/lib/co/src/co_time.h \
$(pwre_sroot)/lib/co/src/co_cdh.h \
$(pwre_sroot)/lib/rt/src/rt_gdh.h \
$(pwre_sroot)/lib/rt/src/rt_errh.h \
$(pwre_sroot)/lib/rt/src/rt_mh_appl.h \
$(pwre_sroot)/lib/rt/src/rt_qcom.h \
$(pwre_sroot)/lib/rt/src/rt_sevcli.h \
$(pwre_croot)/nmps/lib/nmps/src/nmps_appl.h \
$(pwre_sroot)/lib/rt/src/rt_aproc.h \
$(pwre_sroot)/lib/rt/src/rt_aproc.c \
$(pwre_sroot)/lib/rt/src/rt_net.c \
$(pwre_sroot)/lib/rt/src/rt_appl.h \
$(pwre_sroot)/lib/rt/src/rt_appl.cpp \
$(pwre_sroot)/lib/co/src/co_time.c \
$(pwre_sroot)/lib/co/src/co_cdh.c \
$(pwre_sroot)/lib/rt/src/rt_gdh.c \
$(pwre_sroot)/lib/rt/src/rt_errh.c \
$(pwre_sroot)/lib/rt/src/rt_mh_appl.c \
$(pwre_sroot)/lib/rt/src/rt_qcom.c \
$(pwre_sroot)/lib/rt/src/rt_sevcli.c \
$(pwre_croot)/nmps/lib/nmps/src/nmps_appl.c \
$(pwre_sroot)/doc/prm/src/ra_appl.cpp \
$(pwre_sroot)/doc/prm/src/ra_advappl.cpp \
$(pwre_sroot)/exp/inc/src \
$(pwre_sroot)/lib/co/src \
$(pwre_sroot)/lib/rt/src \
$(pwre_croot)/nmps/lib/nmps/src \
$(pwre_sroot)/doc/prm/src \
$(pwr_inc)/rt_gdh_msg.h \
$(pwr_inc)/rt_hash_msg.h
......@@ -603,6 +584,7 @@ INPUT_ENCODING = UTF-8
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
FILE_PATTERNS = *.cpp \
*.cqt \
*.c \
*.h
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......@@ -32,75 +32,89 @@
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
**/
*/
#ifndef co_math_h
#define co_math_h
#include <float.h>
/**
@file co_math.h
General useful math functions.
/*! \file co_math.h
\brief General useful math functions.
*/
#ifndef MAX
//! Return the largest of two values
/*! \def MAX(Dragon, Eagle)
\brief Return the maximum of \a Dragon and \a Eagle
*/
#define MAX(Dragon, Eagle) ((Dragon) > (Eagle) ? (Dragon) : (Eagle))
#endif
#ifndef MIN
//! Return the smallest of two values
/*! \def MIN(Dragon, Eagle)
\brief Return the minimum of \a Dragon and \a Eagle
*/
#define MIN(Dragon, Eagle) ((Dragon) < (Eagle) ? (Dragon) : (Eagle))
#endif
#ifndef ABS
//! Return the absolute value, i.e. removes the sign and returns the
//! non-negative value
/*! \def ABS(Dragon)
\brief Return the absolute value of \a Dragon,
i.e. removes the sign such that ABS(-1) = 1.
*/
#define ABS(Dragon) ((Dragon) >= 0 ? (Dragon) : (-(Dragon)))
#endif
#ifndef CLAMP
/*! \def CLAMP(x, min, max)
\brief Restricts \a x to be between \a min and \a max
*/
#define CLAMP(x, min, max) ((x) < (min)) ? (min) : (((x) > (max)) ? (max) : (x))
#endif
#ifndef SIGN
#define SIGN(a) ((a) >= 0 ? 1 : -1)
#endif
/*! \def SIGN(x)
\brief Returns the sign of \a x,
i.e. 1 if \a x is positive or -1 if \a x is negative
*/
#define SIGN(x) ((x) >= 0 ? 1 : -1)
#ifndef ROUND
/*! \def ROUND(x)
\brief Rounds \a x to the nearest integer,
where 0.5 is rounded upwards to 1.
*/
#define ROUND(x) ((x) >= 0 ? (int)((x) + 0.5) : (int)((x)-0.5))
#endif
#ifndef typecheck
//! Typechecking macro from the Linux kernel
//! Generates a compile-time warning if x is not of type 'type'
//! Usage: typecheck(int, 0.5f) -> warning
//! typecheck(int, 10) -> no warning
/*! \def typecheck(type,x)
\brief Typechecking macro from the Linux kernel
Generates a compile-time warning if x is not of type 'type'
Usage: typecheck(int, 0.5f) -> warning
typecheck(int, 10) -> no warning
*/
#define typecheck(type,x) \
({ type __dummy; \
typeof(x) __dummy2; \
(void)(&__dummy == &__dummy2); \
1; \
})
#endif
#ifndef feq
//! Checks whether two floating point numbers are equal
/*! \def feq(a, b)
\brief Checks whether two doubles \a a and \a b are equal
Use this instead of a == b
*/
#define feq(a, b) \
({ typecheck(double, a); \
typecheck(double, b); \
(ABS((a) - (b)) < DBL_EPSILON); \
})
#endif
#ifndef feqf
//! Checks whether two floating point numbers are equal
/*! \def feqf(a, b)
\brief Checks whether two floats \a a and \a b are equal
Use this instead of a == b
*/
#define feqf(a, b) \
({ typecheck(float, a); \
typecheck(float, b); \
(ABS((a) - (b)) < FLT_EPSILON); \
})
#endif
#endif
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......@@ -32,20 +32,26 @@
* the source code of ProviewR (the version used to produce the
* combined work), being distributed under the terms of the GNU
* General Public License plus this exception.
**/
*/
#ifndef co_string_h
#define co_string_h
#include <string.h>
/*!
Checks if two strings a and b are equal
strcmp returns 0 (i.e. false) if the strings are equal, which is not that obvious
/*! \file co_string.h
\brief General useful string manipulation functions.
*/
/*! \def streq(a,b)
\brief Checks if two strings \a a and \a b are equal
strcmp returns 0 (i.e. false) if the strings are equal, which is not obvious
streq(a,b) is more readable and easier to understand than strcmp(a,b) == 0
*/
#define streq(a,b) (strcmp((a),(b)) == 0)
/*!
Checks if the string 'str' starts with the substring 'prefix'
/*! \def str_StartsWith(str,prefix)
\brief Checks if the \a str starts with the substring \a prefix
*/
#define str_StartsWith(str, prefix) (strncmp(str, prefix, strlen(prefix)) == 0)
......@@ -53,8 +59,10 @@
extern "C" {
#endif
//! Convert string to lower case.
/*!
/*! \fn char* str_ToLower(char* dst, const char* src)
\brief Converts the string \a src to lower case,
puts the result in \a dst and returns \a dst
Handles all ISO 8859-1 characters, not only ASCII.
If src is NULL, dst is used also as input string.
......@@ -64,8 +72,10 @@ extern "C" {
*/
char* str_ToLower(char* dst, const char* src);
//! Convert string to upper case.
/*!
/*! \fn char* str_ToUpper(char* dst, const char* src)
\brief Converts the string \a src to upper case,
puts the result in \a dst and returns \a dst
Handles all ISO 8859-1 characters, not only ASCII.
If src is NULL, dst is used also as input string.
......@@ -75,8 +85,9 @@ char* str_ToLower(char* dst, const char* src);
*/
char* str_ToUpper(char* dst, const char* src);
//! Compare two strings not regarding their casing.
/*!
/*! \fn int str_NoCaseStrcmp(const char* s, const char* t)
\brief Compares two strings \a s and \a t, disregarding their case.
This routine works only on alphabetic characters.
It works on the standard ascii a-z and on the
DEC multinational extensions.
......@@ -84,14 +95,14 @@ char* str_ToUpper(char* dst, const char* src);
The function exploits the fact that only bit 5 changes
when you change the case of a character.
The function returns the uppercase offset between
the two first differing characters.
\return The uppercase offset between the two first differing characters.
*/
int str_NoCaseStrcmp(const char* s, const char* t);
//! Compare the n (at most) first charachters of two strings not regarding their
//! casing.
/*!
/*! \fn int str_NoCaseStrncmp(const char* s, const char* t, size_t n)
\brief Compares the first n (at most) characters of two strings
\a s and \a t, disregarding their case.
This routine works only on alphabetic characters.
It works on the standard ascii a-z and on the
DEC multinational extensions.
......@@ -99,31 +110,37 @@ int str_NoCaseStrcmp(const char* s, const char* t);
The function exploits the fact that only bit 5 changes
when you change the case of a character.
The function returns the uppercase offset between
the two first differing characters.
\return The uppercase offset between the two first differing characters.
*/
int str_NoCaseStrncmp(const char* s, const char* t, size_t n);
//! Copy string char by char to allow overlapping source and target buffers
char* str_Strcpy(char* dest, const char* src);
/*! \fn char* str_Strcpy(char* dst, const char* src)
\brief Copies \a src into \a dst character by character to allow
overlapping source and destination buffers.
*/
char* str_Strcpy(char* dst, const char* src);
//! Copy string char by char to allow overlapping source and target buffers
char* str_Strncpy(char* dest, const char* src, size_t n);
/*! \fn char* str_Strncpy(char* dst, const char* src, size_t n)
\brief Copies the first n (at most) characters of \a src into \a dst
character by character to allow overlapping source and destination buffers.
*/
char* str_Strncpy(char* dst, const char* src, size_t n);
//! Copy string, and cut of if the string is to long with ending '...'
/*!
For example the string '0123456789' will return the string '0123...' when
the size of the returned string is 8.
/*! \fn int str_StrncpyCutOff(char* dst, const char* src, size_t n, int cutleft)
\brief Copies the first n (at most) characters of \a src into \a dst
character by character to allow overlapping source and destination buffers.
Cuts of the string if it is to long, and replaces the ending with '...'
If the string is cut off, the return value is 1, else 0.
For example str_StrncpyCutOff(dst, '0123456789', 8) will return '0123...',
which is 8 characters including the terminating NULL character.
\param t Out string.
\param s In string.
\param src Input string.
\param dst Output string.
\param n Size of out string.
\param cutleft The first characters of the string is cut.
\return 1 if the string is cut off, else 0.
\param cutleft Whether to cut the first characters of the string instead of the last.
\return 1 if the string was cut off, else 0.
*/
int str_StrncpyCutOff(char* t, const char* s, size_t n, int cutleft);
int str_StrncpyCutOff(char* dst, const char* src, size_t n, int cutleft);
#ifdef __cplusplus
}
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* Proview Open Source Process Control.
* Copyright (C) 2005-2017 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
/**
/*
* ProviewR Open Source Process Control.
* Copyright (C) 2005-2018 SSAB EMEA AB.
*
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment