Esempio n. 1
0
        /// <summary>
        /// Insere um novo personagem.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void strip_save_Click(object sender, System.EventArgs e)
        {
            VerifyTextbox();

            if (CharacterDB.ExistCharacter(txt_user.Text))
            {
                DarkMessageBox.ShowWarning("Este usuário já está sendo utilizado.", "Aviso");
                return;
            }

            var index     = list_classes.SelectedIndices[0];
            var character = FillCharacterData();
            var classe    = Static.Classes[index];

            if (CharacterDB.InsertCharacter(_accountID, character, classe) > 0)
            {
                DarkMessageBox.ShowInformation("O personagem foi cadastrado.", "Aviso");
                Program.AccountForm.FillPlayerNames();
                Clear();
            }
            else
            {
                DarkMessageBox.ShowWarning("Não foi possível cadastrar.", "Aviso");
            }
        }
        /// <summary>
        /// Deleta o personagem.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void strip_delete_Click(object sender, EventArgs e)
        {
            if (pData.ID == 0)
            {
                return;
            }

            var result = DarkMessageBox.ShowWarning("Deseja realmente apagar o personagem?", "Aviso", DarkDialogButton.YesNo);

            if (result == DialogResult.No)
            {
                return;
            }

            if (CharacterDB.DeleteCharacter(pData.ID) > 0)
            {
                DarkMessageBox.ShowInformation("O personagem foi deletado.", "Aviso");

                //carrega novamente os nomes dos personagens.
                Program.AccountForm.FillPlayerNames();

                Close();
            }
            else
            {
                DarkMessageBox.ShowWarning("Não foi possível fazer a exclusão.", "Aviso");
            }
        }
Esempio n. 3
0
        private void btnNewMap_Click(object sender, EventArgs e)
        {
            if (DarkMessageBox.ShowWarning(
                    Strings.Mapping.newmap, Strings.Mapping.newmapcaption, DarkDialogButton.YesNo,
                    Properties.Resources.Icon
                    ) !=
                DialogResult.Yes)
            {
                return;
            }

            if (Globals.CurrentMap.Changed() &&
                DarkMessageBox.ShowInformation(
                    Strings.Mapping.savemapdialogue, Strings.Mapping.savemap, DarkDialogButton.YesNo,
                    Properties.Resources.Icon
                    ) ==
                DialogResult.Yes)
            {
                SaveMap();
            }

            if (mapTreeList.list.SelectedNode == null)
            {
                PacketSender.SendCreateMap(-1, Globals.CurrentMap.Id, null);
            }
            else
            {
                PacketSender.SendCreateMap(-1, Globals.CurrentMap.Id, (MapListItem)mapTreeList.list.SelectedNode.Tag);
            }
        }
        /// <summary>
        /// Salva os dados.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void strip_save_Click(object sender, EventArgs e)
        {
            if (!VerifyTextbox())
            {
                return;
            }

            FillPlayerData();

            if (pData.ChangePass)
            {
                if (pData.LastPassword.CompareTo(pData.Password) == 0)
                {
                    pData.ChangePass = false;
                }
            }

            if (pData.ChangePin)
            {
                if (pData.LastPin.CompareTo(pData.Pin) == 0)
                {
                    pData.ChangePin = false;
                }
            }

            if (AccountDB.SaveAccountData(pData) > 0)
            {
                DarkMessageBox.ShowInformation("As informações do usuário foram atualizadas.", "Aviso");

                Clear();
                return;
            }

            DarkMessageBox.ShowWarning("Não foi possível salvar os dados.", "Aviso");
        }
        /// <summary>
        /// Apaga o usuário.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void strip_delete_Click(object sender, EventArgs e)
        {
            if (pData.ID == 0)
            {
                DarkMessageBox.ShowInformation("Você precisa carregar um usuário para fazer essa ação.", "Aviso");
                return;
            }

            var result = DarkMessageBox.ShowWarning("Deseja realmente apagar este usuário?", "Aviso", DarkDialogButton.YesNo);

            if (result == DialogResult.No)
            {
                return;
            }

            if (AccountDB.DeleteAccountData(pData.ID) > 0)
            {
                DarkMessageBox.ShowInformation("Usuário deletado.", "Aviso");

                CharacterDB.DeleteAllCharacter(pData.ID);

                Clear();
                pData.Clear();
                return;
            }

            DarkMessageBox.ShowWarning("Não foi possível fazer a exclusão.", "Aviso");
        }
Esempio n. 6
0
        private async void darkButtonAttach_Click(object sender, EventArgs e)
        {
            try {
                this.darkButtonAttach.Enabled = false;
                bool result = await this.devkits.AttachProcessAsync();

                if (result)
                {
                    DarkMessageBox.ShowInformation("Current game process is attached successfully !", Application.ProductName, DarkDialogButton.Ok);
                }
                else
                {
                    DarkMessageBox.ShowWarning($"No game process found", Application.ProductName, DarkDialogButton.Ok);
                }
            }
            catch (DevKitAttachProcessFailedException ex) {
                DarkMessageBox.ShowWarning($"No game process found\r\n{ex.Message}", Application.ProductName, DarkDialogButton.Ok);
            }
            catch (Exception ex) {
                DarkMessageBox.ShowError(ex.Message, $"Error - {Application.ProductName}", DarkDialogButton.Ok);
            }

            finally {
                this.darkButtonAttach.Enabled = true;
            }
        }
        /// <summary>
        /// Salva as alterações do personagem.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void strip_save_Click(object sender, EventArgs e)
        {
            if (txt_name.Text.Trim().Length < 4)
            {
                DarkMessageBox.ShowInformation("O nome de personagem precisa ser maior que 4 caracteres.", "Aviso");
                return;
            }

            //verifica todos os campos
            VerifyTextbox();

            //se não há classes, sai do metodo
            if (Static.Classes.Count == 0)
            {
                return;
            }

            //preenche os dados
            FillCharacterData();


            if (CharacterDB.SaveCharacterData(pData) > 0)
            {
                DarkMessageBox.ShowInformation("O personagem foi salvo.", "Aviso");

                //carrega novamente os nomes dos personagens.
                Program.AccountForm.FillPlayerNames();
            }
            else
            {
                DarkMessageBox.ShowWarning("Não foi possível salvar as informações.", "Aviso");
            }
        }
        public static void CheckManual()
        {
            string currentVersion = GetCurrentVersion();
            string latestVersion  = GetLatestVersion();

            if (latestVersion == null)
            {
                DarkMessageBox.ShowWarning("WinDynamicDesktop could not connect to the Internet " +
                                           "to check for updates.", "Error");
            }
            else if (IsUpdateAvailable(currentVersion, latestVersion))
            {
                DialogResult result = DarkMessageBox.ShowInformation("There is a newer version " +
                                                                     "of WinDynamicDesktop available. Do you want to download the update now?\n\n" +
                                                                     "Current Version: " + currentVersion + "\nLatest Version: " + latestVersion,
                                                                     "Update Available", DarkDialogButton.YesNo);

                if (result == DialogResult.Yes)
                {
                    UwpDesktop.GetHelper().OpenUpdateLink();
                }
            }
            else
            {
                DarkMessageBox.ShowInformation("You already have the latest version of " +
                                               "WinDynamicDesktop installed.", "Up To Date");
            }
        }
Esempio n. 9
0
        private async void darkButtonConnect_Click(object sender, EventArgs e)
        {
            this.darkButtonConnect.Enabled  = false;
            this.darkComboBoxDevkit.Enabled = false;

            try {
                ConnectionStatus status = await this.devkits.ConnectTargetAsync();

                switch (status)
                {
                case ConnectionStatus.Connected:
                    if (this.devkits.DevkitTarget == DevkitTarget.PS3)
                    {
                        this.darkButtonAttach.Enabled = true;
                    }

                    this.darkButtonConnect.Enabled = false;
                    this.darkButtonConnect.Text    = "Connected";
                    DarkMessageBox.ShowInformation($"Connected to Target", "Devkit", DarkDialogButton.Ok);
                    break;

                default:
                    this.darkButtonConnect.Enabled = true;
                    DarkMessageBox.ShowWarning("Connection error", "Devkit", DarkDialogButton.Ok);
                    break;
                }
            }
            catch (Exception ex) {
                DarkMessageBox.ShowError(ex.Message, $"Error - {Application.ProductName}", DarkDialogButton.Ok);
                this.darkButtonConnect.Enabled = true;
            }
            finally {
                this.darkComboBoxDevkit.Enabled = true;
            }
        }
        /// <summary>
        /// Salva ou insere os dados.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void item_save_Click(object sender, EventArgs e)
        {
            FillClasseData();

            if (!IsSaveMode)
            {
                if (ClasseDB.ExistClasse(pData.ID))
                {
                    DarkMessageBox.ShowInformation("O ID já está em uso.", "Aviso");
                    return;
                }

                if (ClasseDB.InsertClasse(pData) > 0)
                {
                    DarkMessageBox.ShowInformation("As informações foram salvas.", "Aviso");
                    Program.MainForm.LoadClasse();
                    Close();
                }
            }
            else
            {
                if (ClasseDB.UpdateClasse(pData, pData.OldID) > 0)
                {
                    DarkMessageBox.ShowInformation("As informações foram salvas.", "Aviso");
                    //atualiza as informações
                    pData.OldID = pData.ID;
                    Program.MainForm.LoadClasse();
                }
            }
        }
Esempio n. 11
0
        private void Export(bool normalformat)
        {
            string export = string.Empty;

            try
            {
                DarkTreeNode node  = accTree.SelectedNodes[0];
                string[]     title = node.Text.Split('|');
                string       gid   = title[1].Replace(" ", null);
                string       date  = title[2];
                string       pw    = node.Nodes[0].Text;
                string       lw    = node.Nodes[1].Text;
                if (normalformat)
                {
                    export = $"<= Exported by Pollery =>\r\n -> Date: {date} \r\n -> Grow ID: {gid} \r\n -> Password(s): {pw} \r\n -> Last world: {lw}";
                }
                else
                {
                    export = $"{gid}:{pw}";
                }
            }
            catch
            {
                DarkMessageBox.ShowWarning("Please select a valid account node.", "Invalid Node", DarkDialogButton.Ok);
                return;
            }
            File.WriteAllText("accounts.txt", export);
            DarkMessageBox.ShowInformation("Exported to account.txt!", "Exported successfully.", DarkDialogButton.Ok);
        }
Esempio n. 12
0
        public void DoubleClick(int x, int y)
        {
            for (var x1 = 1; x1 < GridWidth + 1; x1++)
            {
                for (var y1 = 1; y1 < GridHeight + 1; y1++)
                {
                    if (new Rectangle(
                            ContentRect.X + x1 * TileWidth, ContentRect.Y + y1 * TileHeight, TileWidth, TileHeight
                            ).Contains(new System.Drawing.Point(x, y)))
                    {
                        if (Grid[x1 - 1, y1 - 1].MapId != Guid.Empty)
                        {
                            if (Globals.CurrentMap != null &&
                                Globals.CurrentMap.Changed() &&
                                DarkMessageBox.ShowInformation(
                                    Strings.Mapping.savemapdialogue, Strings.Mapping.savemap, DarkDialogButton.YesNo,
                                    Properties.Resources.Icon
                                    ) ==
                                DialogResult.Yes)
                            {
                                SaveMap();
                            }

                            Globals.MainForm.EnterMap(Grid[x1 - 1, y1 - 1].MapId);
                            Globals.MapEditorWindow.Select();
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Verifica se os campos estão corretos.
        /// </summary>
        /// <returns></returns>
        private bool VerifyTextbox()
        {
            if (txt_user.Text.Trim().Length < 4)
            {
                DarkMessageBox.ShowInformation("O nome de usuário deve ser maior que 4 digítos.", "Informação");
                return(false);
            }

            if (txt_password.Text.Trim().Length < 4)
            {
                DarkMessageBox.ShowInformation("A senha de usuário deve ser maior que 4 digítos.", "Informação");
                return(false);
            }

            if (txt_language.Text.Trim().Length == 0)
            {
                txt_language.Text = "1";
            }
            if (txt_access.Text.Trim().Length == 0)
            {
                txt_access.Text = "1";
            }
            if (txt_cash.Text.Trim().Length == 0)
            {
                txt_cash.Text = "0";
            }

            return(true);
        }
        public FormGameBoard(GameClass gameClass)
        {
            InitializeComponent();
            this._gameClass     = gameClass;
            this.gameController = GameController.NewGame();
            switch (this._gameClass)
            {
            case GameClass.WITH_AI:
                prepareAIGameBoard();
                break;

            case GameClass.WITH_HUMAN:
                prepareHumanGameBoard();
                break;
            }
            timer.Interval = 1000;
            timer.Tick    += (obj, e) =>
            {
                this.lblRemainingTime.Text = 20 - (++passedTime) + " s";
                if (passedTime == 20)
                {
                    // time expired, lose
                    this.timer.Stop();
                    this._gameBoard.Lock();
                    DarkMessageBox.ShowInformation("Time expired. You lose.", "Time Expired");
                }
            };
        }
Esempio n. 15
0
 private void salirToolStripMenuItem_Click(object sender, EventArgs e)
 {
     DialogResult = DarkMessageBox.ShowInformation("¿Quieres salir de la aplicación?", "Información", DarkDialogButton.OkCancel);
     if (DialogResult == DialogResult.OK)
     {
         this.Close();
     }
 }
Esempio n. 16
0
        private async void okButton_Click(object sender, EventArgs e)
        {
            okButton.Enabled = false;

            if (!locationCheckBox.Checked)
            {
                LocationIQData data = LocationIQService.GetLocationData(inputBox.Text);

                if (data != null)
                {
                    JsonConfig.settings.location  = inputBox.Text;
                    JsonConfig.settings.latitude  = data.lat;
                    JsonConfig.settings.longitude = data.lon;

                    this.Hide();

                    if (ThemeManager.isReady)
                    {
                        AppContext.wcsService.RunScheduler();
                    }

                    DarkMessageBox.ShowInformation("Location set successfully to: " +
                                                   data.display_name + "\n(Latitude = " + data.lat + ", Longitude = " +
                                                   data.lon + ")", "Success");

                    this.Close();
                }
                else
                {
                    DarkMessageBox.ShowWarning("The location you entered was invalid, or you " +
                                               "are not connected to the Internet.", "Error");
                }
            }
            else
            {
                this.Hide();
                bool locationUpdated = await UwpLocation.UpdateGeoposition();

                if (locationUpdated)
                {
                    if (ThemeManager.isReady)
                    {
                        AppContext.wcsService.RunScheduler();
                    }

                    this.Close();
                }
                else
                {
                    DarkMessageBox.ShowWarning("Failed to get location from Windows location " +
                                               "service.", "Error");

                    this.Show();
                }
            }

            okButton.Enabled = true;
        }
Esempio n. 17
0
        private void darkButton1_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog savepath = new FolderBrowserDialog();

            if (savepath.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    var numbersAndWords = idEntryList.Zip(nameEntryList, (n, w) => new { id = n, name = w });
                    foreach (var nw in numbersAndWords)
                    {
                        var pkgPath = filenames;
                        var idx     = int.Parse(nw.id);
                        var name    = nw.name;
                        var outPath = savepath.SelectedPath + "\\" + name.Replace("_SHA", ".SHA").Replace("_DAT", ".DAT").Replace("_SFO", ".SFO").Replace("_XML", ".XML").Replace("_SIG", ".SIG").Replace("_PNG", ".PNG").Replace("_JSON", ".JSON").Replace("_DDS", ".DDS").Replace("_TRP", ".TRP").Replace("_AT9", ".AT9");;

                        using (var pkgFile = File.OpenRead(pkgPath))
                        {
                            var pkg = new PkgReader(pkgFile).ReadPkg();
                            if (idx < 0 || idx >= pkg.Metas.Metas.Count)
                            {
                                DarkMessageBox.ShowError("Error: entry number out of range", "PS4 PKG Tool");
                                return;
                            }
                            using (var outFile = File.Create(outPath))
                            {
                                var meta = pkg.Metas.Metas[idx];
                                outFile.SetLength(meta.DataSize);
                                if (meta.Encrypted)
                                {
                                    if (passcode == null)
                                    {
                                        DarkMessageBox.ShowWarning("Warning: Entry is encrypted but no passcode was provided! Saving encrypted bytes.", "PS4 PKG Tool");
                                    }
                                    else
                                    {
                                        var entry = new SubStream(pkgFile, meta.DataOffset, (meta.DataSize + 15) & ~15);
                                        var tmp   = new byte[entry.Length];
                                        entry.Read(tmp, 0, tmp.Length);
                                        tmp = LibOrbisPkg.PKG.Entry.Decrypt(tmp, pkg.Header.content_id, passcode, meta);
                                        outFile.Write(tmp, 0, (int)meta.DataSize);
                                        return;
                                    }
                                }
                                new SubStream(pkgFile, meta.DataOffset, meta.DataSize).CopyTo(outFile);
                            }
                        }
                    }

                    DarkMessageBox.ShowInformation("All entry item extracted", "PS4 PKG Tool");
                }
                catch (Exception a)
                {
                    DarkMessageBox.ShowError(a.Message, "PS4 PKG Tool");
                }
            }
        }
Esempio n. 18
0
 public void PruneEntries(DateTime start, DateTime end)
 {
     // make sure we are selecting a positive date range
     // or if we are pruning todays date
     if (end.Subtract(start).TotalSeconds > 1 || (start.Date == DateTime.Now.Date && end.Date == DateTime.Now.Date))
     {
         int pruned = vaultFile.PruneEntries(start, end);
         DarkMessageBox.ShowInformation($"Pruned {pruned} total entieries from the vault", "Pruning");
     }
 }
Esempio n. 19
0
        private void btnTestExpire_Click(object sender, System.EventArgs e)
        {
            var db = Start.redis.GetDatabase();

            db.StringSet("KEY", "VALUE");
            db.KeyExpire("KEY", TimeSpan.FromSeconds(5));

            DarkMessageBox.ShowInformation(db.StringGet("KEY"), "Expire");
            DarkMessageBox.ShowInformation(db.KeyTimeToLive("KEY").ToString(), "TTL");
            DarkMessageBox.ShowInformation(db.StringGet("KEY"), "Expire");
        }
Esempio n. 20
0
 private void darkButton2_Click_1(object sender, EventArgs e)
 {
     if (CheckForPS4Connection() == true)
     {
         DarkMessageBox.ShowInformation("PS4 detected.", "PS4 PKG Tool");
     }
     else
     {
         DarkMessageBox.ShowError("PS4 not detected.", "PS4 PKG Tool");
     }
 }
Esempio n. 21
0
 protected override void HandleFormPacket(RequestContext requestContext, LoginResultPacket packet)
 {
     if (packet.Succeeded)
     {
         requestContext.FormContainer.ChangeForm <MapEditorForm>();
     }
     else
     {
         DarkMessageBox.ShowInformation("Invalid login.", packet.Message);
     }
 }
Esempio n. 22
0
 private void BtnEntryDelete_Click(object sender, EventArgs e)
 {
     if (vaultFile.SelectedEntry != null)
     {
         if (DarkMessageBox.ShowInformation("Are you sure you wish to delete this entry?", "Continue", DarkDialogButton.YesNo) == DialogResult.Yes)
         {
             vaultFile.DeleteEntry(vaultFile.SelectedEntry);
             lvEntries.Items.Remove(selectedListItem);
             SelectFirstKey();
         }
     }
 }
Esempio n. 23
0
        private void savePlugin_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "Plugin File (.pl)|*.pl";
            sfd.SupportMultiDottedExtensions = false;
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                File.WriteAllText(sfd.FileName, codeBox.Text.Base64Encode());
                DarkMessageBox.ShowInformation($"Plugin saved - {sfd.FileName}", "Plugin Manager", DarkDialogButton.Ok);
            }
        }
Esempio n. 24
0
 private void configuraciónToolStripMenuItem_Click(object sender, EventArgs e)
 {
     Properties.Settings.Default.IP            = ucTextBoxEx_IP.InputText;
     Properties.Settings.Default.Port          = ucTextBoxEx_Port.InputText;
     Properties.Settings.Default.VisuMaxValue  = (int)ucMeter_Visu.MaxValue;
     Properties.Settings.Default.VisuMinValue  = (int)ucMeter_Visu.MinValue;
     Properties.Settings.Default.VisuDegrees   = (int)ucMeter_Visu.MeterDegrees;
     Properties.Settings.Default.VisuDivisions = (int)ucMeter_Visu.SplitCount;
     Properties.Settings.Default.VisuName      = ucMeter_Visu.FixedText;
     Properties.Settings.Default.Save();
     DarkMessageBox.ShowInformation("Propiedades Guardadas", "Guardar");
 }
Esempio n. 25
0
 private void ToolStripMenuItem_Load_Click(object sender, EventArgs e)
 {
     ucTextBoxEx_IP.InputText            = Properties.Settings.Default.IP;
     ucTextBoxEx_Port.InputText          = Properties.Settings.Default.Port;
     ucMeter_Visu.MaxValue               = Properties.Settings.Default.VisuMaxValue;
     ucMeter_Visu.MinValue               = Properties.Settings.Default.VisuMinValue;
     ucMeter_Visu.MeterDegrees           = Properties.Settings.Default.VisuDegrees;
     ucMeter_Visu.SplitCount             = Properties.Settings.Default.VisuDivisions;
     ucMeter_Visu.FixedText              = Properties.Settings.Default.VisuName;
     darkComboBox_Interval.SelectedIndex = Properties.Settings.Default.Interval;
     DarkMessageBox.ShowInformation("Propiedades Cargadas", "Cargar");
 }
Esempio n. 26
0
        private void button2_Click(object sender, EventArgs e)
        {
            foreach (var item in NameEntryList)
            {
                DarkMessageBox.ShowInformation(item, "PS4 PKG Tool");
            }

            foreach (var item in offsetEntryList)
            {
                DarkMessageBox.ShowInformation(item, "PS4 PKG Tool");
            }
        }
Esempio n. 27
0
        private void copyURLToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewCell cell in darkDataGridView1.SelectedCells)
            {
                int selectedrowindex = cell.RowIndex;

                DataGridViewRow selectedRow = darkDataGridView1.Rows[selectedrowindex];

                Clipboard.SetText(selectedRow.Cells[3].Value.ToString());
            }
            DarkMessageBox.ShowInformation("URL copied to clipboard.", "PS4 PKG Tool");
            Logger.log("URL copied to clipboard.");
        }
Esempio n. 28
0
        private void btnTestLoad_Click(object sender, EventArgs e)
        {
            Stopwatch time = new Stopwatch();

            time.Start();

            for (int i = 1; i < 10000; i++)
            {
                Start.redis.GetDatabase().Ping();
            }

            time.Stop();
            DarkMessageBox.ShowInformation(time.ElapsedMilliseconds.ToString() + "ms", "Result");
        }
 public void CreateNewDish()
 {
     if (Dish != null)
     {
         var result = DarkMessageBox.ShowInformation("Would you like to save the current dish?", "Save Dish?", DarkDialogButton.YesNo);
         if (result == DialogResult.Yes)
         {
             //TODO: SAVE DISH
             Debug.WriteLine("Note: Save Dish is not implemented yet.");
         }
     }
     // Open Dish Selection
     ShowSelectDialog();
 }
Esempio n. 30
0
        private void NodeDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Node.Tag.GetType() == typeof(MapListMap))
            {
                if (Globals.CurrentMap != null &&
                    Globals.CurrentMap.Changed() &&
                    DarkMessageBox.ShowInformation(
                        Strings.Mapping.savemapdialogue, Strings.Mapping.savemap, DarkDialogButton.YesNo,
                        Properties.Resources.Icon
                        ) ==
                    DialogResult.Yes)
                {
                    SaveMap();
                }

                Globals.MainForm.EnterMap(((MapListMap)e.Node.Tag).MapId);
            }
        }