# messages.properties
#
# /*******************************************************************************
# * Copyright (c) 2006 IBM Corporation and others.
# * All rights reserved. This program and the accompanying materials
# * are made available under the terms of the Eclipse Public License v1.0
# * which accompanies this distribution, and is available at
# * http://www.eclipse.org/legal/epl-v10.html
# *
# * Contributors:
# *     IBM Corporation - initial API and implementation
# *******************************************************************************/

# SimulationManager
SimMgr.Deserialization_Error=URI\uc5d0\uc11c \uc5f0\uc18d \uc2dc\ub098\ub9ac\uc624 \uc77d\ub294 \uc911 \ubb38\uc81c \ubc1c\uc0dd \ "{0} \"
SimMgr.Start_Sim=\uc2dc\ubbac\ub808\uc774\uc158 \uc2dc\uc791
SimMgr.CrtSim=\uc2dc\ubbac\ub808\uc774\uc158 \ub9cc\ub4e4\uae30
SimMgr.Run=\uc2dc\ubbac\ub808\uc774\uc158 \uc2e4\ud589 \uc911

# Simulation
Sim.Time_Error=\uc2dc\uc791\ud558\uae30 \uc804\uc5d0 \uc911\ub2e8 \uc2dc\uac04. \ud604\uc7ac \uc2dc\uac04\uc740: {0}, \uc911\uc9c0 \uc2dc\uac04\uc740: {1}
Sim.IErr="{0}"\uc2e4\ud589 \uc911 \ub0b4\ubd80 \uc624\ub958 \ubc1c\uc0dd
Sim.MissingSeq=\uc2dc\ud000\uc11c\uac00 \uc5c6\uae30 \ub54c\ubb38\uc5d0 \uc2dc\ub098\ub9ac\uc624 "{0}"\ub97c \uc2e4\ud589\ud560 \uc218 \uc5c6\uc74c.
Sim.MissingModel=\ubaa8\ub378\uc774 \uc5c6\uae30 \ub54c\ubb38\uc5d0 \uc2dc\ub098\ub9ac\uc624 "{0}"\uc744 \uc2e4\ud589\ud560 \uc218 \uc5c6\uc74c.
