public dynamic CreateAgent(ControlService cs) { _devices ??= GetDevices().ToArray(); cs.RefreshSystemEvent += LoadClient; LoadClient(); return(this); }
public void Before_each_test() { //ServicesRepository servicesRepository = new ServicesRepository(new ScutexEntities()); //CommonRepository commonRepository = new CommonRepository(new ScutexServiceEntities()); AsymmetricEncryptionProvider asymmetricEncryptionProvider = new AsymmetricEncryptionProvider(); SymmetricEncryptionProvider symmetricEncryptionProvider = new SymmetricEncryptionProvider(); ObjectSerializationProvider objectSerializationProvider = new ObjectSerializationProvider(); NumberDataGenerator numberDataGenerator = new NumberDataGenerator(); PackingService packingService = new PackingService(numberDataGenerator); MasterService masterService = new MasterService(commonRepository); CommonService commonService = new CommonService(); KeyPairService keyPairService = new KeyPairService(commonService, commonRepository); ServiceStatusProvider serviceStatusProvider = new ServiceStatusProvider(symmetricEncryptionProvider, objectSerializationProvider, asymmetricEncryptionProvider); servicesService = new ServicesService(servicesRepository, serviceStatusProvider, packingService, null, null, null, null, null, null); controlService = new ControlService(symmetricEncryptionProvider, keyPairService, packingService, masterService, objectSerializationProvider, asymmetricEncryptionProvider); service = new Scutex.Model.Service(); service.OutboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High); service.InboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High); service.ManagementInboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High); service.ManagementOutboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High); }
private void DeviceDiscovered(object?sender, ServiceInstanceDiscoveryEventArgs e) { var foo = e.Message; if (!foo.ToString().Contains("_wled")) { return; } var name = e.ServiceInstanceName.ToString(); if (name.Contains(".local")) { name = name.Split(".")[0]; } if (_ids.Contains(name)) { return; } try { var rr = e.Message.AdditionalRecords; var ip = string.Empty; var id = string.Empty; foreach (var msg in rr) { switch (msg.Type) { // Extract IP case DnsType.A: ip = msg.ToString().Split(" ").Last(); break; // Extract Mac case DnsType.TXT: id = msg.ToString().Split("=")[1]; break; } } if (!string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(ip)) { var nData = new WledData(id, ip) { Name = name }; ControlService.AddDevice(nData).ConfigureAwait(false); _ids.Add(id); } else { Log.Warning("Unable to get data for wled."); } } catch (Exception p) { Log.Warning("WLED Discovery Exception: " + p.Message); } }
/// <summary> /// When Appointment changed will happen /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void OnAppointmentChanged(object sender, PersistentObjectEventArgs e) { _innerCtrl.ChangedService.MarkChanged(); try { base.OnAppointmentChanged(sender, e); } catch { } ControlService.NailImageBox.Image = null; AppointmentInfo appointment = _innerCtrl.appointConverter.Convert(e.Object as Appointment); ControlService.RefreshPropertyGrid(appointment); if (appointment.Target != null) { Color color = DataGate.FindColorByIndex(appointment.LabelId); //LibraryGroup.Current.SetColor( ControlService.LibraryTree.Controller.SetColor(appointment.Target, color);//.Refresh(); ControlService.EnableCopyMenu(true); foreach (Appointment app in Appointments.Items) { if (app.Subject == appointment.Subject && app.Description.Replace(" ", "") == appointment.Description) { app.LabelId = appointment.LabelId; } } } }
public ActionResult GetAllControls(string SName, string SModu) { //拿到前台发送来的是当前页面和页的大小 int pageSize = Request["rows"] == null ? 10 : int.Parse(Request["rows"]); int pageIndex = Request["page"] == null ? 1 : int.Parse(Request["page"]); int total = 0; short delNormal = (short)Model.Enum.DelFlagEnum.Normal; #region 分页查询 string strName = SName ?? ""; string strModu = SModu ?? ""; var controlList = ControlService.LoadPageEntities(pageSize, pageIndex, out total, d => d.DelFlag == delNormal && d.Name.Contains(strName) && d.Module.Name.Contains(strModu), d => d.Code, true); var moduList = ModuleService.LoadEntities(d => 1 == 1); var data = new { total = total, rows = (from ct in controlList join md in moduList on ct.ModuleID equals md.ID orderby md.Code select new { ct.ID, module = md.Name, ct.Code, ct.Name, ct.Url, ct.DelFlag, ct.SubTime, ct.SubBy }).ToList() }; return(Json(data, JsonRequestBehavior.AllowGet)); #endregion }
//Role COntrol: Lấy các control của quyền load lên bảng public ActionResult GetControlRole(int roleId) { IControlService controlService = new ControlService(); List <ControlModel> lstControlRole = controlService.GetControlRole(baseAddress, $"control/getcontrolforrole?roleId={roleId}&&x=1"); return(Json(lstControlRole)); }
public static void launchHost() { ControlService=new LedClientService.ControlService(); ServiceHost host = new ServiceHost(ControlService); host.Open(); MainControl = new MainControl(); }
public void Before_each_test() { //ServicesRepository servicesRepository = new ServicesRepository(new ScutexEntities()); //CommonRepository commonRepository = new CommonRepository(new ScutexServiceEntities()); AsymmetricEncryptionProvider asymmetricEncryptionProvider = new AsymmetricEncryptionProvider(); SymmetricEncryptionProvider symmetricEncryptionProvider = new SymmetricEncryptionProvider(); ObjectSerializationProvider objectSerializationProvider = new ObjectSerializationProvider(); NumberDataGenerator numberDataGenerator = new NumberDataGenerator(); PackingService packingService = new PackingService(numberDataGenerator); MasterService masterService = new MasterService(commonRepository); CommonService commonService = new CommonService(); KeyPairService keyPairService = new KeyPairService(commonService, commonRepository); ServiceStatusProvider serviceStatusProvider = new ServiceStatusProvider(symmetricEncryptionProvider, objectSerializationProvider, asymmetricEncryptionProvider); servicesService = new ServicesService(servicesRepository, serviceStatusProvider, packingService, null, null, null, null, null, null); controlService = new ControlService(symmetricEncryptionProvider, keyPairService, packingService, masterService, objectSerializationProvider, asymmetricEncryptionProvider); service = new Scutex.Model.Service(); service.OutboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High); service.InboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High); service.ManagementInboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High); service.ManagementOutboundKeyPair = asymmetricEncryptionProvider.GenerateKeyPair(BitStrengths.High); }
public MainWindow() { InitializeComponent(); var controlService = new ControlService(); controlService.Start(); }
/// <summary> /// redo /// </summary> public override void Redo() { try { foreach (PropertyItem item in _items) { if (item.Target.GetType().Name == "Appointment") { Appointment app = item.Target as Appointment; for (int i = 0; i < ScheduleControl.Current.Scheduler.Storage.Appointments.Count; i++) { if (ScheduleControl.Current.Scheduler.Storage.Appointments[i].Subject == app.Subject) { item.Target = ScheduleControl.Current.Scheduler.Storage.Appointments[i]; } } } item.Prop.SetValue(item.Target, item.NewValue, null); } ControlService.RefreshPropertyGrid(_target); Invalidate(); } catch (Exception ex) { _log.Error(ex.Message, ex); } finally { } }
public ActionResult GetAllControl(string SName, string SModuleID) { //拿到前台发送来的是当前页面和页的大小 int pageSize = Request["rows"] == null ? 15 : int.Parse(Request["rows"]); int pageIndex = Request["page"] == null ? 1 : int.Parse(Request["page"]); int total = 0; short delNormal = (short)Model.Enum.DelFlagEnum.Normal; if (SName == null) { SName = ""; } if (string.IsNullOrEmpty(SModuleID)) { return(Content("请先选择所属模块!")); } int guiModuleID = int.Parse(SModuleID); #region 分页查询 var controlList = ControlService.LoadPageEntities(pageSize, pageIndex, out total, d => d.DelFlag == delNormal && d.Name.Contains(SName) && d.ModuleID == guiModuleID && d.TakeEffect, d => d.Code, true); var data = new { total = total, rows = (from u in controlList select new { u.ID, Module = u.Module.Name, u.Code, u.Name }).ToList() }; return(Json(data, JsonRequestBehavior.AllowGet)); #endregion }
/// <summary> /// Insert appointment to schedulestorage /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void OnAppointmentInserted(object sender, PersistentObjectEventArgs e) { var appointment = e.Object as Appointment; try { base.OnAppointmentInserted(sender, e); } catch { } _innerCtrl.ChangedService.MarkChanged(); ControlService.EnableCopyMenu(true); if (appointment.CustomFields == null) { try { _customFields.SetValue(appointment, new CustomFieldCollection()); } catch (Exception ex) { DataGate.Log.Error("SchedulerStorageDecorator Exception:" + ex.Message); } } if (!_innerCtrl.IsOpen) { UndoService.AddAppointmentAddedAction(this, appointment); } }
//protected override void OnMouseUp(MouseEventArgs e) //{ // base.OnMouseUp(e); // if (e.X >= _lastLeft) // { // IsRight = true; // } // else // IsRight = false; //} protected override void OnSplitterMoved(SplitterEventArgs sevent) { base.OnSplitterMoved(sevent); if (this.Left >= _lastLeft) { OffSet = this.Left - _lastLeft; IsRight = true; } else { OffSet = _lastLeft - this.Left; IsRight = false; } //Update effect control LayerControl.ComputeEffectWidth(_layerCtrl, this); //computer critical value LayerControl.ComputerCritical(_layerCtrl, this); //Update effect data LayerControl.ComputeEffectWidth(_layerCtrl); var msgCtrl = MessageControl.Current; msgCtrl.SetShapeVisible(_layerCtrl); msgCtrl.ChangedService.MarkChanged(); msgCtrl.ShapeControl.Invalidate(); ControlService.RefreshPropertyGrid(_layerCtrl._layer); _layerCtrl.SetMaxWidth(30); }
private void OnLayerDragDrop(object sender, DragEventArgs e) { if (e.Effect != DragDropEffects.Copy) { return; } var fmts = e.Data.GetFormats(); if (fmts == null || fmts.Length != 1) { return; } LayerEffect effect = e.Data.GetData(fmts[0]) as LayerEffect; CurrentDragLayer = true; CurrentDrag = this; if (effect != null) { //effect.Layer = this._layer.Shape switch (effect.Type) { case EffectType.Entry: effect.Duration = this.ctlEntryEffect.Width == 0 ? 2 : ctlEntryEffect.Effect.Duration; break; case EffectType.Exit: effect.Duration = this.ctlExitEffect.Width == 0 ? 2 : ctlExitEffect.Effect.Duration; break; default: effect.Duration = this.ctlEmphasis.Width == 0 ? 8 : ctlEmphasis.Effect.Duration; break; } //if (effect.Duration == 0) // effect.Duration = 2;//ControlService.SignCombo.Current.Template.Message. 2; ////else //// effect.Duration++; UndoService.BeginTransaction(String.Format("Add a {0} effect", effect.Type)); UndoService.AddLayerEffectAddedAction(effect); AddEffectFromDragDrop(effect); UndoService.Commit(); ControlService.RefreshPropertyGrid(_layer); CurrentDragLayer = false; return; } LayerControl frameLayer = e.Data.GetData(typeof(LayerControl)) as LayerControl; if (frameLayer != null) { OnDragLayer(frameLayer); } EffectContainer.Invalidate(); }
private void OnLayerMouseUp(object sender, MouseEventArgs e) { if (_layerMouseUp != null) { _layerMouseUp(this, sender as Control, e); } ControlService.RefreshPropertyGrid(_layer); }
public static StoreData GetStoreSerialized(ControlService cs) { var output = new StoreData { Stats = cs.Stats ?? CpuUtil.GetStats().Result }; return(output); }
public async Task Add() { await ControlService.AddAsync(Current).ConfigureAwait(false); Collection = await ControlService.GetAsync().ConfigureAwait(false); StateHasChanged(); }
public static void Main() { var application = new App(); application.InitializeComponent(); application.Run(); rootHub = new ControlService(); }
public void Emit(LogEvent logEvent) { if (_cs == null) { _cs = ControlService.GetInstance(); } _cs?.SendLogLine(logEvent).ConfigureAwait(false); }
public ActionResult Add(ActionInfo act) { //if (act.Control.Module == null) //{ // return Content("请选择模块"); //} if (act.ControlID == 0) { return(Content("请选择控制器")); } if (act.Name == "") { return(Content("请输入权限名称")); } if (act.ActionMethod == "") { return(Content("请输入方法名称")); } //查找控制器编码 var control = ControlService.LoadEntities(u => u.ID == act.ControlID).FirstOrDefault(); #region 生成编码 //查找同一控制器的权限 var actList = ActionInfoService.LoadEntities(u => u.ControlID == act.ControlID); string actCode; //同一控制器下权限的编码 var actCodeList = (from u in actList orderby u.Code descending select new { u.Code }); if (actCodeList.Any()) { actCode = actCodeList.Take(1).ToList()[0].Code; string strLs = actCode.Substring(actCode.Length - 3, 3); int intLs = int.Parse(strLs); intLs++; string strNewLs = actCode.Substring(0, actCode.Length - 3) + intLs.ToString("D3"); act.Code = strNewLs; } else { act.Code = control.Code + "001"; } #endregion #region 生成UrlD:\SS.Platform\SS.Platform.OA.Model\DataModel.edmx act.Url = "/" + control.Url + "/" + act.ActionMethod; #endregion act = initEntity(act); ActionInfoService.Add(act); if (ActionInfoService.SaveChanges() > 0) { return(Content("ok")); } return(Content("添加失败了")); }
public ActionResult AssignControlForPer(int roleId, int controlId) { IControlService controlService = new ControlService(); controlService.AssignControlForRole(baseAddress, $"control/assigncotrolforrole?roleId={roleId}&&controlId={controlId}"); List <ControlModel> lstControlRole = controlService.GetControlRole(baseAddress, $"control/getcontrolforrole?roleId={roleId}&&x=1"); return(Json(lstControlRole)); }
protected override void OnMouseDown(MouseEventArgs e) { DrawArea_MouseDown(this, e); bool canCopy = _document.SelectedCount > 0; ControlService.EnableCopyMenu(canCopy); base.OnMouseDown(e); }
// Use this for initialization void Start() { _ctrlService = Injector.Get <ControlService> (); _ctrlService.PlayerStateChanged += HandlePlayerStateChanged; seeker = GetComponent <Seeker> (); controller = GetComponent <CharacterController> (); seeker.pathCallback += OnPathCompelte; }
public int Delete(params int[] ids) { foreach (var id in ids) { var ctlInfo = ControlService.LoadEntities(u => u.ID == id).FirstOrDefault(); ctlInfo.DelFlag = (short)SS.Platform.OA.Model.Enum.DelFlagEnum.Deleted; } return(ControlService.SaveChanges()); }
public HueDiscovery(ColorService colorService) : base(colorService) { _bridgeLocatorHttp = new HttpBridgeLocator(); _bridgeLocatorMdns = new MdnsBridgeLocator(); _bridgeLocatorSsdp = new SsdpBridgeLocator(); _bridgeLocatorHttp.BridgeFound += DeviceFound; _bridgeLocatorMdns.BridgeFound += DeviceFound; _bridgeLocatorSsdp.BridgeFound += DeviceFound; _controlService = colorService.ControlService; }
public dynamic?CreateAgent(ControlService cs) { if (!SystemUtil.IsRaspberryPi()) { return(null); } cs.RefreshSystemEvent += ReloadData; return(this); }
public ActionResult DeleteControlForPer(ControlModel controlModel) { IControlService controlService = new ControlService(); controlService.AddControlForPer(baseAddress, "control/deletecontrolforper", controlModel); List <ControlModel> lstControlPer = controlService.GetControlPer(baseAddress, $"control/getcontrolper?perId={controlModel.permissionId}"); return(Json(lstControlPer)); }
public ActionResult Edit(string ids) { var id = int.Parse(ids); Control ctl = ControlService.LoadEntities(u => u.ID == id).FirstOrDefault(); var result = new { model = ctl }; JsonResult str = Json(result, JsonRequestBehavior.AllowGet); return(Json(result, JsonRequestBehavior.AllowGet)); }
public async Task ShowModal(int id) { Current = await ControlService.GetAsync(id).ConfigureAwait(false); Current.Lecturers = await LecturerService.GetAsync(); Current.Disciplines = await DisciplineService.GetAsync(); Current.Students = await StudentService.GetAsync(); }
public Service(IClient client) { _client = client; Api = new ApiService(client); Apps = new AppsService(client); Audio = new AudioService(client); Control = new ControlService(client); Notifications = new NotificationService(client); Tv = new TvService(client); }
public IHttpActionResult Search(string query) { if (!string.IsNullOrEmpty(query) && query.Length > 1) { return(Ok(ControlService.Search(query))); } else { return(Ok(new List <SimpleSearchResult>())); } }
public ActionResult EditSave(Control ctl) { ctl.ModifiedBy = LoginUserInfo == null ? 0 : LoginUserInfo.ID; ctl.ModifiedTIme = DateTime.Now; if (ControlService.Update(ctl)) { ControlService.SaveChanges(); return(Content("ok")); } return(Content("修改失败了!")); }
public void SendMessages(ControlService.OptionType type, string fileName) { throw new NotImplementedException(); }
public void SendMessages(ControlService.OptionType type, string fileName) { files = new List<string>() { fileName }; TotalFiles = files.Count; Option(type); }
private void Option(ControlService.OptionType type) { switch (type) { case ControlService.OptionType.Start: Start(); break; case ControlService.OptionType.NextDoc: NextFile(); break; case ControlService.OptionType.LastDoc: LastFile(); break; case ControlService.OptionType.FullScreen: FullScreen(); break; case ControlService.OptionType.Next: GONextPage(); break; case ControlService.OptionType.Previous: GOPreviousPage(); break; case ControlService.OptionType.IncreaseZoom: IncreaseZoom(); break; case ControlService.OptionType.DecreaseZoom: DecreaseZoom(); break; case ControlService.OptionType.Pause: this.Pause(); break; case ControlService.OptionType.Play: this.Play(); break; case ControlService.OptionType.Stop: this.Stop(); break; case ControlService.OptionType.MoveUp: this.MoveUp(); break; case ControlService.OptionType.MoveDown: this.MoveDown(); break; case ControlService.OptionType.MoveLeft: this.MoveLeft(); break; case ControlService.OptionType.MoveRight: this.MoveRight(); break; } }
public void ToClientNotifyLedDisplayChange(int DeviceID, ControlService.LedOutputData outdata) { tblDevice device = dbservice.tblDevices.Where(n => n.ZeeBeeID== DeviceID).FirstOrDefault(); if (device == null) return; device.R = outdata.R; device.G = outdata.G; device.B = outdata.B; device.W = outdata.W; // throw new NotImplementedException(); }
public void Before_each_test() { clientLicenseRepoistory = new ClientLicenseRepository(objectSerializationProvider, symmetricEncryptionProvider); clientLicenseService = new ClientLicenseService(clientLicenseRepoistory); serviceProductsRepository = new ServiceProductsRepository(new ScutexServiceEntities()); symmetricEncryptionProvider = new SymmetricEncryptionProvider(); asymmetricEncryptionProvider = new AsymmetricEncryptionProvider(); hashingProvider = new HashingProvider(); objectSerializationProvider = new ObjectSerializationProvider(); numberDataGenerator = new NumberDataGenerator(); packingService = new PackingService(numberDataGenerator); commonRepository = new CommonRepository(new ScutexServiceEntities()); clientRepository = new ClientRepository(new ScutexServiceEntities()); keyGenerator = new KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider); masterService = new MasterService(commonRepository); activationLogRepository = new ActivationLogRepoistory(new ScutexServiceEntities()); activationLogService = new ActivationLogService(activationLogRepository, hashingProvider); keyService = new KeyManagementService(clientRepository, licenseKeyService, activationLogService, hashingProvider, serviceProductsRepository); commonService = new CommonService(); string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); path = path.Replace("file:\\", ""); var mockCommonService = new Mock<ICommonService>(); mockCommonService.Setup(common => common.GetPath()).Returns(path + "\\Data\\Client\\"); string masterServiceDataText; using (TextReader reader = new StreamReader(path + "\\Data\\MasterService.dat")) { masterServiceDataText = reader.ReadToEnd().Trim(); } masterServiceData = objectSerializationProvider.Deserialize<MasterServiceData>(masterServiceDataText); var mockCommonRepository = new Mock<ICommonRepository>(); mockCommonRepository.Setup(repo => repo.GetMasterServiceData()).Returns(masterServiceData); keyPairService = new KeyPairService(mockCommonService.Object, mockCommonRepository.Object); controlService = new ControlService(symmetricEncryptionProvider, keyPairService, packingService, masterService, objectSerializationProvider, asymmetricEncryptionProvider); servicesRepository = new ServicesRepository(new ScutexEntities()); serviceStatusProvider = new ServiceStatusProvider(symmetricEncryptionProvider, objectSerializationProvider, asymmetricEncryptionProvider); licenseActiviationProvider = new LicenseActiviationProvider(asymmetricEncryptionProvider, symmetricEncryptionProvider, objectSerializationProvider); servicesService = new ServicesService(servicesRepository, serviceStatusProvider, packingService, licenseActiviationProvider, null, null, null, null, null); licenseKeyService = new LicenseKeyService(keyGenerator, packingService, clientLicenseService); activationService = new ActivationService(controlService, keyService, keyPairService, objectSerializationProvider, asymmetricEncryptionProvider, null, null); string serviceData; using (TextReader reader = new StreamReader(path + "\\Data\\Service.dat")) { serviceData = reader.ReadToEnd().Trim(); } service = objectSerializationProvider.Deserialize<Service>(serviceData); }
public void Integration_ControlService_GetContestControlNamesAsync() { using (IDataContextAsync context = new ContestqsoContext()) using (IUnitOfWorkAsync unitOfWork = new UnitOfWork(context)) { IRepositoryAsync<CatOperator> CatOperatorRepository = new Repository<CatOperator>(context, unitOfWork); IControlService ContolService = new ControlService(CatOperatorRepository); var asyncTask = ContolService.GetContestControlNames(); var ContestControl = asyncTask.Result; Assert.IsTrue(ContestControl.ControlCategoryDto.CatOperator.Count > 1); Assert.IsTrue(ContestControl.ControlCategoryDto.CatAssisted.Count > 1); Assert.IsTrue(ContestControl.ControlCategoryDto.CatBand.Count > 1); Assert.IsTrue(ContestControl.ControlCategoryDto.CatNoOfTx.Count > 1); Assert.IsTrue(ContestControl.ControlCategoryDto.CatPower.Count > 1); Assert.IsTrue(ContestControl.ControlCategoryDto.CatOperator.Contains("SINGLE-OP")); Assert.IsTrue(ContestControl.ControlFiltersDto.FiltBand.Count > 1); Assert.IsTrue(ContestControl.ControlFiltersDto.FiltContinent.Count > 1); Assert.IsTrue(ContestControl.ControlFiltersDto.FiltCountryInnerHTML.Count > 1); Assert.IsTrue(ContestControl.ControlFiltersDto.FiltCQZone.Count > 1); Assert.IsTrue(ContestControl.ControlXaxisDto.XaxisDuration.Count > 1); Assert.IsTrue(ContestControl.ControlXaxisDto.XaxisStarttime.Count > 1); Assert.IsTrue(ContestControl.ControlYaxisDto.YaxisFunction.Count > 1); Assert.IsTrue(ContestControl.ControlYaxisDto.YaxisInterval.Count > 1); Assert.IsTrue(ContestControl.ControlYaxisDto.YaxisViewType.Count > 1); } }
public void SendMessage(ControlService.OptionType type) { //MessageBox.Show(string.Format("[ClientTime{0:HHmmss}]Service Broadcast:{1}", DateTime.Now, message)); }
public void SendMessage(ControlService.OptionType type) { Option(type); }