Fix source comment/doc typos (follow-up)
Found via `codespell -q 3 -S *.po,./thirdparty -L aactual,acount,aline,alocation,alog,anormal,anumber,aother,apoints,aparent,aray,dout,einstance,modul,ot,overide,serie,te,,tesselate,tesselator,tht`
This commit is contained in:
parent
1151783a34
commit
0446d35f0d
|
@ -49,7 +49,7 @@ cmake_dependent_option( BUILD_SMALL_DEBUG_FILES "In debug build: create smaller
|
|||
#
|
||||
# KiCad build options should be added below.
|
||||
#
|
||||
# If you add a new build option, please add it's state to the
|
||||
# If you add a new build option, please add its state to the
|
||||
# OnCopyVersionInfo() function in common/dialog_about/dialog_about.cpp
|
||||
# so that build option settings can be included in bug reports.
|
||||
#
|
||||
|
|
|
@ -37,7 +37,7 @@ if( PYTHON_SITE_PACKAGE_PATH )
|
|||
endif()
|
||||
|
||||
if( VCPKG_TOOLCHAIN )
|
||||
# python 3.8+ requires us to use python to add additiona load directories (PATH no longer supported)
|
||||
# python 3.8+ requires us to use python to add additional load directories (PATH no longer supported)
|
||||
# vcpkg does not copy all the dlls into the python folder so we need this for development
|
||||
# as the wxpython modules need the wxwidgets library DLLs to load
|
||||
set( _py_dll "import os;os.add_dll_directory(\"${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin\");os.add_dll_directory(\"${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/bin\");" )
|
||||
|
|
|
@ -256,7 +256,7 @@ bool PGM_BASE::InitPgm( bool aHeadless )
|
|||
if( !m_settings_manager->IsOK() )
|
||||
return false;
|
||||
|
||||
// Set up built-in environment variables (and override them from the system enviroment if set)
|
||||
// Set up built-in environment variables (and override them from the system environment if set)
|
||||
GetCommonSettings()->InitializeEnvironment();
|
||||
|
||||
// Load common settings from disk after setting up env vars
|
||||
|
|
|
@ -60,7 +60,7 @@ wxString ConvertToNewOverbarNotation( const wxString& aOldStr )
|
|||
{
|
||||
if( ++lookahead != aOldStr.end() && *lookahead == '{' )
|
||||
{
|
||||
// This way the subseqent opening curly brace will not start an
|
||||
// This way the subsequent opening curly brace will not start an
|
||||
// overbar.
|
||||
newStr << "~~{}";
|
||||
continue;
|
||||
|
|
|
@ -44,7 +44,7 @@ public:
|
|||
void Add( const wxString& aRef, const wxString& aFpSchName, const wxString& aFpCmpName );
|
||||
|
||||
/**
|
||||
* @param aReference is the compoent schematic reference.
|
||||
* @param aReference is the component schematic reference.
|
||||
* @return the selection option:
|
||||
* 0 for fpid text from the netlist
|
||||
* 1 for fpid text from the cmp file
|
||||
|
|
|
@ -52,7 +52,7 @@ class testundoredo2(ActionPlugin):
|
|||
def createFPCXFootprint(self,pads):
|
||||
size_025_160mm = wxSizeMM(0.25,1.6)
|
||||
size_150_200mm = wxSizeMM(1.50,2.0)
|
||||
# create a new footprint, it's parent is our previously created pcb
|
||||
# create a new footprint, its parent is our previously created pcb
|
||||
footprint = FOOTPRINT(self.pcb)
|
||||
footprint.SetReference("FPC"+str(pads)) # give it a reference name
|
||||
footprint.Reference().SetPosition(wxPointMM(-1,-1))
|
||||
|
|
|
@ -676,7 +676,7 @@ void SCH_EDIT_FRAME::doCloseWindow()
|
|||
|
||||
RecordERCExclusions();
|
||||
|
||||
// Close the find dialog and preserve it's setting if it is displayed.
|
||||
// Close the find dialog and preserve its setting if it is displayed.
|
||||
if( m_findReplaceDialog )
|
||||
{
|
||||
m_findStringHistoryList = m_findReplaceDialog->GetFindEntries();
|
||||
|
|
|
@ -886,12 +886,12 @@ private:
|
|||
void initScreenZoom();
|
||||
|
||||
/**
|
||||
* Verify that the symbol library links \a aSheet and all of it's child sheets have
|
||||
* Verify that the symbol library links \a aSheet and all of its child sheets have
|
||||
* been remapped to the symbol library table.
|
||||
*
|
||||
* @param aSheet is the #SCH_SHEET object to test.
|
||||
*
|
||||
* @return true if \a aSheet and it's child sheets have not been remapped.
|
||||
* @return true if \a aSheet and its child sheets have not been remapped.
|
||||
*/
|
||||
bool checkForNoFullyDefinedLibIds( SCH_SHEET* aSheet );
|
||||
|
||||
|
|
|
@ -2330,7 +2330,7 @@ SCH_SYMBOL* SCH_SEXPR_PARSER::parseSchematicSymbol()
|
|||
break;
|
||||
|
||||
case T_property:
|
||||
// The field parent symbol must be set and it's orientation must be set before
|
||||
// The field parent symbol must be set and its orientation must be set before
|
||||
// the field positions are set.
|
||||
field = parseSchField( symbol.get() );
|
||||
|
||||
|
|
|
@ -2087,7 +2087,7 @@ void SCH_SEXPR_PLUGIN_CACHE::DeleteSymbol( const wxString& aSymbolName )
|
|||
{
|
||||
LIB_SYMBOL* rootSymbol = symbol;
|
||||
|
||||
// Remove the root symbol and all it's children.
|
||||
// Remove the root symbol and all its children.
|
||||
m_symbols.erase( it );
|
||||
|
||||
LIB_SYMBOL_MAP::iterator it1 = m_symbols.begin();
|
||||
|
|
|
@ -801,7 +801,7 @@ void SCH_LEGACY_PLUGIN::loadFile( const wxString& aFileName, SCH_SCREEN* aScreen
|
|||
LoadContent( reader, aScreen, m_version );
|
||||
|
||||
// Unfortunately schematic files prior to version 2 are not terminated with $EndSCHEMATC
|
||||
// so checking for it's existance will fail so just exit here and take our chances. :(
|
||||
// so checking for its existance will fail so just exit here and take our chances. :(
|
||||
if( m_version > 1 )
|
||||
{
|
||||
char* line = reader.Line();
|
||||
|
@ -4225,7 +4225,7 @@ void SCH_LEGACY_PLUGIN_CACHE::DeleteSymbol( const wxString& aSymbolName )
|
|||
{
|
||||
LIB_SYMBOL* rootSymbol = symbol;
|
||||
|
||||
// Remove the root symbol and all it's children.
|
||||
// Remove the root symbol and all its children.
|
||||
m_symbols.erase( it );
|
||||
|
||||
LIB_SYMBOL_MAP::iterator it1 = m_symbols.begin();
|
||||
|
|
|
@ -203,7 +203,7 @@ void SCH_SCREEN::Append( SCH_SCREEN* aScreen )
|
|||
{
|
||||
wxCHECK_RET( aScreen, "Invalid screen object." );
|
||||
|
||||
// No need to descend the hierarchy. Once the top level screen is copied, all of it's
|
||||
// No need to descend the hierarchy. Once the top level screen is copied, all of its
|
||||
// children are copied as well.
|
||||
for( auto aItem : aScreen->m_rtree )
|
||||
Append( aItem );
|
||||
|
|
|
@ -231,7 +231,7 @@ wxString SCH_SHEET_PATH::PathAsString() const
|
|||
s = wxT( "/" ); // This is the root path
|
||||
|
||||
// Start at 1 to avoid the root sheet, which does not need to be added to the path.
|
||||
// It's timestamp changes anyway.
|
||||
// Its timestamp changes anyway.
|
||||
for( unsigned i = 1; i < size(); i++ )
|
||||
s += at( i )->m_Uuid.AsString() + "/";
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ struct SCH_SHEET_INSTANCE
|
|||
*
|
||||
* A hierarchical schematic uses sheets (hierarchical sheets) included in a given sheet.
|
||||
* Each sheet corresponds to a schematic drawing handled by a SCH_SCREEN structure. A
|
||||
* SCH_SCREEN structure contains drawings, and have a filename to write it's data. Also a
|
||||
* SCH_SCREEN structure contains drawings, and have a filename to write its data. Also a
|
||||
* SCH_SCREEN displays a sheet number and the name of the sheet.
|
||||
*
|
||||
* In simple (and flat) hierarchies a sheet is linked to a SCH_SCREEN, and a SCH_SCREEN is
|
||||
|
@ -346,7 +346,7 @@ public:
|
|||
bool TestForRecursion( const wxString& aSrcFileName, const wxString& aDestFileName );
|
||||
|
||||
/**
|
||||
* Make the sheet file name relative to it's parent sheet.
|
||||
* Make the sheet file name relative to its parent sheet.
|
||||
*
|
||||
* This should only be called when changing the parent sheet path such performing a save
|
||||
* as or a new schematic without a project in stand alone mode. The sheet file name is
|
||||
|
|
|
@ -81,7 +81,7 @@ bool SCH_EDIT_FRAME::checkForNoFullyDefinedLibIds( SCH_SHEET* aSheet )
|
|||
|
||||
if( newScreens.HasNoFullyDefinedLibIds() )
|
||||
{
|
||||
msg.Printf( _( "The schematic '%s' has not had it's symbol library links remapped "
|
||||
msg.Printf( _( "The schematic '%s' has not had its symbol library links remapped "
|
||||
"to the symbol library table. The project this schematic belongs to "
|
||||
"must first be remapped before it can be imported into the current "
|
||||
"project." ),
|
||||
|
|
|
@ -61,7 +61,7 @@ private:
|
|||
*
|
||||
* The passed vector<int> will be returned with the same number of elements
|
||||
* as there are Gerber files. The indices into it are 1:1 with the loaded Gerber
|
||||
* files. Any Gerber that maps will have it's entry set to the KiCad PCB layer
|
||||
* files. Any Gerber that maps will have its entry set to the KiCad PCB layer
|
||||
* number. Gerbers that can be identified or which don't map to an
|
||||
* equivalent KiCad PCB layer will be set to UNSELECTED_LAYER.
|
||||
*
|
||||
|
@ -76,7 +76,7 @@ private:
|
|||
*
|
||||
* The passed vector<int> will be returned with the same number of elements
|
||||
* as there are Gerber files. The indices into it are 1:1 with the loaded Gerber
|
||||
* files. Any Gerber that maps will have it's entry set to the KiCad PCB layer
|
||||
* files. Any Gerber that maps will have its entry set to the KiCad PCB layer
|
||||
* number. Gerbers that aren't using Altium extensions or which don't map to an
|
||||
* equivalent KiCad PCB layer will be set to UNSELECTED_LAYER.
|
||||
*
|
||||
|
@ -91,7 +91,7 @@ private:
|
|||
*
|
||||
* The passed vector<int> will be returned with the same number of elements
|
||||
* as there are Gerber files. The indices into it are 1:1 with the loaded Gerber
|
||||
* files. Any Gerber that maps will have it's entry set to the KiCad PCB layer
|
||||
* files. Any Gerber that maps will have its entry set to the KiCad PCB layer
|
||||
* number. Gerbers that aren't using KiCad naming or which don't map to an
|
||||
* equivalent KiCad PCB layer will be set to UNSELECTED_LAYER.
|
||||
*
|
||||
|
@ -106,7 +106,7 @@ private:
|
|||
*
|
||||
* The passed vector<int> will be returned with the same number of elements
|
||||
* as there are Gerber files. The indices into it are 1:1 with the loaded Gerber
|
||||
* files. Any Gerber that maps will have it's entry set to the KiCad PCB layer
|
||||
* files. Any Gerber that maps will have its entry set to the KiCad PCB layer
|
||||
* number. Gerbers that aren't using X2 File functions or which don't map to an
|
||||
* equivalent KiCad PCB layer will be set to UNSELECTED_LAYER.
|
||||
*
|
||||
|
|
|
@ -192,8 +192,8 @@ void GERBER_FILE_IMAGE::ResetDefaultValues()
|
|||
m_Offset.x = 0;
|
||||
m_Offset.y = 0; // Coord Offset, from OF command
|
||||
m_Scale.x = m_Scale.y = 1.0; // scale (A and B) this layer
|
||||
m_MirrorA = false; // true: miror / axe A (default = X)
|
||||
m_MirrorB = false; // true: miror / axe B (default = Y)
|
||||
m_MirrorA = false; // true: mirror / axe A (default = X)
|
||||
m_MirrorB = false; // true: mirror / axe B (default = Y)
|
||||
m_SwapAxis = false; // false if A = X, B = Y; true if A =Y, B = Y
|
||||
m_Has_DCode = false; // true = DCodes in file
|
||||
// false = no DCode-> perhaps deprecated RS274D file
|
||||
|
|
|
@ -214,7 +214,7 @@ public:
|
|||
/**
|
||||
* Return the current coordinate type pointed to by InnJnn Text (InnnnJmmmm)
|
||||
*
|
||||
* These coordinates are relative, so if coordinate is absent, it's value
|
||||
* These coordinates are relative, so if coordinate is absent, its value
|
||||
* defaults to 0
|
||||
*/
|
||||
wxPoint ReadIJCoord( char*& Text );
|
||||
|
|
|
@ -96,7 +96,7 @@ private:
|
|||
wxFileName m_filename;
|
||||
wxArrayString m_GerberFiles; // List of gerber files in job
|
||||
|
||||
// Convert a JSON string, that uses escaped sequence of 4 hexdecimal digits
|
||||
// Convert a JSON string, that uses escaped sequence of 4 hexadecimal digits
|
||||
// to encode unicode chars when not ASCII7 codes
|
||||
// json11 converts this sequence to UTF8 string
|
||||
wxString formatStringFromJSON( const std::string& name );
|
||||
|
@ -166,7 +166,7 @@ bool GERBER_JOBFILE_READER::ReadGerberJobFile()
|
|||
|
||||
wxString GERBER_JOBFILE_READER::formatStringFromJSON( const std::string& name )
|
||||
{
|
||||
// Convert a JSON string, that uses a escaped sequence of 4 hexdecimal digits
|
||||
// Convert a JSON string, that uses a escaped sequence of 4 hexadecimal digits
|
||||
// to encode unicode chars
|
||||
// Our json11 library returns in this case a UTF8 sequence. Just convert it to
|
||||
// a wxString.
|
||||
|
|
|
@ -183,7 +183,7 @@ wxPoint GERBER_FILE_IMAGE::ReadXYCoord( char*& Text, bool aExcellonMode )
|
|||
|
||||
|
||||
/* Returns the current coordinate type pointed to by InnJnn Text (InnnnJmmmm)
|
||||
* These coordinates are relative, so if coordinate is absent, it's value
|
||||
* These coordinates are relative, so if coordinate is absent, its value
|
||||
* defaults to 0
|
||||
*/
|
||||
wxPoint GERBER_FILE_IMAGE::ReadIJCoord( char*& Text )
|
||||
|
|
|
@ -120,7 +120,7 @@ public:
|
|||
int GetItemIndex( DS_DATA_ITEM* aItem ) const;
|
||||
|
||||
/**
|
||||
* @return is the item from it's index \a aIdx, or NULL if does not exist.
|
||||
* @return is the item from its index \a aIdx, or NULL if does not exist.
|
||||
*/
|
||||
DS_DATA_ITEM* GetItem( unsigned aIdx ) const;
|
||||
|
||||
|
|
|
@ -748,7 +748,7 @@ protected:
|
|||
* around.
|
||||
*
|
||||
* Each panel has rows, starting at 0. Each row has positions starting at 0. Each item in a panel
|
||||
* can have it's row and position set.
|
||||
* can have its row and position set.
|
||||
*
|
||||
* Eventually panels will be movable. Each initialization function sets up the panel for this,
|
||||
* then after a //==// break has additional calls to anchor toolbars in a way that matches
|
||||
|
|
|
@ -121,7 +121,7 @@ struct PARSE_ERROR : public IO_ERROR
|
|||
int byteIndex; ///< at which byte offset within the line, 1 based index
|
||||
|
||||
/// problem line of input [say, from a LINE_READER].
|
||||
/// this is brought up in original byte format rather than wxString form, incase
|
||||
/// this is brought up in original byte format rather than wxString form, in case
|
||||
/// there was a problem with the encoding, in which case converting to wxString is
|
||||
/// not reliable in this context.
|
||||
std::string inputLine;
|
||||
|
|
|
@ -293,7 +293,7 @@ public:
|
|||
virtual void Parse( LIB_TABLE_LEXER* aLexer ) = 0;
|
||||
|
||||
/**
|
||||
* Generate the table in s-expression format to \a aOutput with an indention level
|
||||
* Generate the table in s-expression format to \a aOutput with an indentation level
|
||||
* of \a aIndentLevel.
|
||||
*
|
||||
* @param aOutput is the #OUTPUTFORMATTER to format the table into.
|
||||
|
|
|
@ -84,7 +84,7 @@ public:
|
|||
/**
|
||||
* Set the draw at zero flag.
|
||||
*
|
||||
* When set the marker will be drawn when it's position is 0,0. Otherwise it will not
|
||||
* When set the marker will be drawn when its position is 0,0. Otherwise it will not
|
||||
* be drawn when its position is 0,0.
|
||||
*
|
||||
* @param aDrawFlag The value to set the draw at zero flag.
|
||||
|
|
|
@ -149,7 +149,7 @@ private:
|
|||
#ifdef __WXWINDOWS__
|
||||
/**
|
||||
* Gets the root of the kicad install on Windows specifically.
|
||||
* KiCad on Windows has a psuedo posix folder structure contained in it's installed folder
|
||||
* KiCad on Windows has a pseudo posix folder structure contained in its installed folder
|
||||
* This retrieves that root for usage in other methods
|
||||
*/
|
||||
static wxString getWindowsKiCadRoot();
|
||||
|
|
|
@ -195,13 +195,13 @@ public:
|
|||
/**
|
||||
* Set the default language without reference to any preferences. Can be used to set
|
||||
* the language for dialogs that show before preferences are loaded
|
||||
* @param aErrMsg String to return the error messsage(s) in
|
||||
* @param aErrMsg String to return the error message(s) in
|
||||
* @return false if the language could not be set
|
||||
*/
|
||||
bool SetDefaultLanguage( wxString& aErrMsg );
|
||||
|
||||
/**
|
||||
* Set in .m_language_id member the wxWidgets language identifier ID fromthe KiCad
|
||||
* Set in .m_language_id member the wxWidgets language identifier ID from the KiCad
|
||||
* menu id (internal menu identifier).
|
||||
*
|
||||
* @param menu_id The KiCad menuitem id (returned by Menu Event, when clicking on a
|
||||
|
|
|
@ -183,7 +183,7 @@ protected:
|
|||
template <typename T>
|
||||
T* getEditFrame() const
|
||||
{
|
||||
#if !defined( QA_TEST ) // Dynamic casts give the linker a siezure in the test framework
|
||||
#if !defined( QA_TEST ) // Dynamic casts give the linker a seizure in the test framework
|
||||
wxASSERT( dynamic_cast<T*>( getToolHolderInt() ) );
|
||||
#endif
|
||||
return static_cast<T*>( getToolHolderInt() );
|
||||
|
@ -196,7 +196,7 @@ protected:
|
|||
T* getModel() const
|
||||
{
|
||||
EDA_ITEM* m = getModelInt();
|
||||
#if !defined( QA_TEST ) // Dynamic casts give the linker a siezure in the test framework
|
||||
#if !defined( QA_TEST ) // Dynamic casts give the linker a seizure in the test framework
|
||||
wxASSERT( dynamic_cast<T*>( m ) );
|
||||
#endif
|
||||
return static_cast<T*>( m );
|
||||
|
|
|
@ -70,7 +70,7 @@ enum VIEW_VISIBILITY_FLAGS {
|
|||
/**
|
||||
* An abstract base class for deriving all objects that can be added to a VIEW.
|
||||
*
|
||||
* It's role is to:
|
||||
* Its role is to:
|
||||
* - communicate geometry, appearance and visibility updates to the associated dynamic VIEW,
|
||||
* - provide a bounding box for redraw area calculation,
|
||||
* - (optional) draw the object using the #GAL API functions for #PAINTER-less implementations.
|
||||
|
|
|
@ -45,7 +45,7 @@ public:
|
|||
void WriteConfig();
|
||||
|
||||
protected:
|
||||
// The constructor is protected, because this class is not intended to be instanciated.
|
||||
// The constructor is protected, because this class is not intended to be instantiated.
|
||||
ATTENUATOR( ATTENUATORS_TYPE Topology );
|
||||
|
||||
public:
|
||||
|
|
|
@ -138,7 +138,7 @@ void eserie::NewCalc( void )
|
|||
i.e_use = false; // no combinations and no results are available
|
||||
|
||||
for( r_data& i : luts[m_series])
|
||||
i.e_use = true; // all selecte E-values available
|
||||
i.e_use = true; // all selected E-values available
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -603,7 +603,7 @@ void PAD::TransformShapeWithClearanceToPolygon( SHAPE_POLY_SET& aCornerBuffer,
|
|||
{
|
||||
case PAD_SHAPE::CIRCLE:
|
||||
case PAD_SHAPE::OVAL:
|
||||
// Note: dx == dy is not guaranted for circle pads in legacy boards
|
||||
// Note: dx == dy is not guaranteed for circle pads in legacy boards
|
||||
if( dx == dy || ( GetShape() == PAD_SHAPE::CIRCLE ) )
|
||||
{
|
||||
TransformCircleToPolygon( aCornerBuffer, padShapePos, dx + aClearanceValue, aError,
|
||||
|
|
|
@ -889,7 +889,7 @@ LIBEVAL::VALUE PCB_EXPR_VAR_REF::GetValue( LIBEVAL::CONTEXT* aCtx )
|
|||
if( it == m_matchingTypes.end() )
|
||||
{
|
||||
// Don't force user to type "A.Type == 'via' && A.Via_Type == 'buried'" when the
|
||||
// simplier "A.Via_Type == 'buried'" is perfectly clear. Instead, return an undefined
|
||||
// simpler "A.Via_Type == 'buried'" is perfectly clear. Instead, return an undefined
|
||||
// value when the property doesn't appear on a particular object.
|
||||
|
||||
return LIBEVAL::VALUE();
|
||||
|
|
|
@ -61,7 +61,7 @@ void MEANDER_PLACER_BASE::SpacingStep( int aSign )
|
|||
|
||||
int MEANDER_PLACER_BASE::Clearance()
|
||||
{
|
||||
// Asumption: All tracks are part of the same net class.
|
||||
// Assumption: All tracks are part of the same net class.
|
||||
// It shouldn't matter which track we pick. They should all have the same clearance if
|
||||
// they are part of the same net class. Therefore, pick the first one on the list.
|
||||
ITEM* itemToCheck = Traces().CItems().front().item;
|
||||
|
|
|
@ -289,7 +289,7 @@ std::vector<BOARD_ITEM*> DRAWING_TOOL::DrawSpecificationStackup(
|
|||
{
|
||||
for( j = 0; j < layers.at( i )->GetSublayersCount(); j++ )
|
||||
{
|
||||
// Layer names are empty untill we close at least once the board setup dialog.
|
||||
// Layer names are empty until we close at least once the board setup dialog.
|
||||
// If the user did not open the dialog, then get the names from the board.
|
||||
// But dielectric layer names will be missing.
|
||||
t = static_cast<PCB_TEXT*>( dataStyle->Duplicate() );
|
||||
|
|
|
@ -769,12 +769,12 @@ void ZONE_FILLER::buildCopperItemClearances( const ZONE* aZone, PCB_LAYER_ID aLa
|
|||
else
|
||||
{
|
||||
// Gives more clearance to arcs (the arc to area drc test is not perfect)
|
||||
// extra_margin is not enought here
|
||||
// extra_margin is not enough here
|
||||
// This is a workaround, that can be removed when (if?) the DRC arcs
|
||||
// issues are fixed
|
||||
// The root cause is the fact the DRC approximates the arc shape
|
||||
// by a segmentlist with a error = +- SHAPE_ARC::DefaultAccuracyForPCB()/2
|
||||
// and the arc to polygons approximation also creates approxiamtions when
|
||||
// and the arc to polygons approximation also creates approximations when
|
||||
// filling the zone
|
||||
if( aTrack->Type() == PCB_ARC_T )
|
||||
gap += SHAPE_ARC::DefaultAccuracyForPCB();
|
||||
|
|
Loading…
Reference in New Issue