diff options
author | Sunil Shetye | 2018-06-19 16:37:08 +0530 |
---|---|---|
committer | Sunil Shetye | 2018-06-19 16:37:08 +0530 |
commit | 449b9f0efaa3dc754efa17285f3e560989366144 (patch) | |
tree | e45b9d42d0ac96a78bd7382faeeec54c1ab572cb /combined.js | |
parent | 09dcb67c99c52386ec43581871db5a7a78eeaccd (diff) | |
download | sci2js-449b9f0efaa3dc754efa17285f3e560989366144.tar.gz sci2js-449b9f0efaa3dc754efa17285f3e560989366144.tar.bz2 sci2js-449b9f0efaa3dc754efa17285f3e560989366144.zip |
support variable(index)(index) on LHS
Diffstat (limited to 'combined.js')
-rw-r--r-- | combined.js | 632 |
1 files changed, 631 insertions, 1 deletions
diff --git a/combined.js b/combined.js index 2646dc34..c0930a89 100644 --- a/combined.js +++ b/combined.js @@ -11452,6 +11452,544 @@ SUPER_f.prototype.set = function SUPER_f() { xcos(arg1.model.rpar); } } +/* autogenerated from "macros/Misc/MBLOCK.sci" */ +function MBLOCK() { +MBLOCK.prototype.define = function MBLOCK() { +in1=["u1"]; +intype=["I"]; +out=[["y1"],["y2"]]; +outtype=[["I"],["E"]]; +param=[["R"],["L"]]; +paramv=list(0.1,.0001); +pprop=[[0],[0]]; +nameF="generic"; +exprs=tlist(["MBLOCK","in","intype","out","outtype","param","paramv","pprop","nameF","funtxt"],sci2exp(in1.slice()),sci2exp(intype.slice()),sci2exp(out.slice()),sci2exp(outtype.slice()),sci2exp(param.slice()),list(string(0.1),string(.0001)),sci2exp(pprop.slice()),nameF,[]); +model=scicos_model(); +model.blocktype="c"; +model.dep_ut=[false,true]; +model.rpar=[]; +for (i=1;i<=lstsize(paramv);i+=1) { +model.rpar=[[model.rpar],[paramv[i-1].slice()]]; +} +mo=modelica(); +mo.model=nameF; +mo.parameters=list(param,paramv); +model.sim=list(mo.model,30004); +mo.inputs=in1; +mo.outputs=out; +model.in1=ones(size(mo.inputs,"r"),1); +model.out=ones(size(mo.outputs,"r"),1); +model.equations=mo; +gr_i=[]; +x=standard_define([3,2],model,exprs,gr_i); +x.graphics.in_implicit=intype; +x.graphics.out_implicit=outtype; +} +MBLOCK.prototype.details = function MBLOCK() { +} +MBLOCK.prototype.get = function MBLOCK() { +} +MBLOCK.prototype.set = function MBLOCK() { +x=arg1; +model=arg1.model; +graphics=arg1.graphics; +exprs=graphics.exprs; +if (type(exprs)==15) { +paramv=list(); +pprop=[]; +for (i=1;i<=size(model.rpar,"*");i+=1) { +paramv[$+1-1]=string(model.rpar(i)); +pprop[$+1-1]=0; +} +exprs=tlist(["MBLOCK","in","intype","out","outtype","param","paramv","pprop","nameF","funtxt"],exprs[1-1](1),exprs[1-1](2),exprs[1-1](3),exprs[1-1](4),exprs[1-1](5),paramv,sci2exp(pprop.slice()),exprs[1-1](7),exprs[2-1]); +} +lab_1=list(exprs.in1,exprs.intype,exprs.out,exprs.outtype,exprs.param,exprs.pprop,exprs.nameF); +lab_2=exprs.paramv; +while (true) { +[ok,Tin,Tintype,Tout,Touttype,Tparam,pprop,Tfunam,lab_1]=scicos_getvalue("Set Modelica generic block parameters",[["Input variables: "],["Input variables types: "],["Output variables: "],["Output variables types:"],["Parameters in Modelica:"],["Parameters properties: "],["Function name: "]],list("str",-1,"str",-1,"str",-1,"str",-1,"str",-1,"vec",-1,"str",-1),lab_1); +if (!ok) { +break; +} +ierr=execstr("in=stripblanks(evstr(Tin)); intype=stripblanks(evstr(Tintype)); out=stripblanks(evstr(Tout)); outtype=stripblanks(evstr(Touttype)); param=stripblanks(evstr(Tparam)); funam=stripblanks(Tfunam)","errcatch"); +if (ierr!=0) { +messagebox("Error in evaluation of variables.","modal","error"); +ok=false; +} +if (ok) { +for (i=1;i<=size(in1,"*");i+=1) { +r=false; +ierr=execstr("r=validvar(in(i))","errcatch"); +if (!r) { +ok=false; +break; +} +} +if (!ok) { +messagebox([["Invalid variable name for the input "+string(i)+"."],["\""+in1(i)+"\""],["Please choose another variable name."]],"modal","error"); +} +} +if (ok) { +for (i=1;i<=size(out,"*");i+=1) { +r=false; +ierr=execstr("r=validvar(out(i))","errcatch"); +if (!r) { +ok=false; +break; +} +} +if (!ok) { +messagebox([["Invalid variable name for the output "+string(i)+"."],["\""+out(i)+"\""],["Please choose another variable name."]],"modal","error"); +} +} +if (ok) { +param=param.slice(); +for (i=1;i<=size(param,"*");i+=1) { +r=false; +ierr=execstr("r=validvar(param(i))","errcatch"); +if (!r) { +ok=false; +break; +} +} +if (!ok) { +messagebox([["Invalid variable name for the parameter "+string(i)+"."],["\""+param[i-1]+"\""],["Please choose another variable name."]],"modal","error"); +} +} +if (ok) { +for (i=1;i<=size(intype,"*");i+=1) { +if (intype(i)!="E"&&intype(i)!="I") { +messagebox("Input type should be \'E\' or \'I\'!","modal","error"); +ok=false; +break; +} +} +} +if (ok) { +for (i=1;i<=size(outtype,"*");i+=1) { +if (outtype(i)!="E"&&outtype(i)!="I") { +messagebox("Output type should be \'E\' or \'I\'!","modal","error"); +ok=false; +break; +} +} +} +if (ok) { +if (or(size(intype)!=size(in1))) { +messagebox("Input variables are not well defined!","modal","error"); +ok=false; +} +} +if (ok) { +if (or(size(outtype)!=size(out))) { +messagebox("Output variables are not well defined!","modal","error"); +ok=false; +} +} +if (ok) { +pprop=pprop.slice(); +if ((size(param,"*")!=size(pprop,"*"))) { +messagebox([["There is differences in"],["size of param and size "],["of param properties."]],"modal","error"); +ok=false; +} +} +if (ok) { +if (max(pprop)>2||min(pprop)<0) { +messagebox([["Parameters properties must be :"],["0 : for simple paramater,"],["1 : for initial state value,"],["2 : for a fixed initial state value."]],"modal","error"); +ok=false; +} +} +if (ok) { +if (funam=="") { +messagebox("The filename is not defined!","modal","error"); +ok=false; +} +} +if (ok) { +[dirF,nameF,extF]=fileparts(funam); +if ((extF!=""&&extF!=".mo")||(dirF!=""&&extF!=".mo")) { +messagebox("Filename extention should be \'.mo \' !","modal","error"); +ok=false; +} +} +if (ok) { +intypex=find(intype=="I"); +outtypex=find(outtype=="I"); +[model,graphics,ok]=set_io(model,graphics,list([ones(in1),ones(in1)],ones(in1)),list([ones(out),ones(out)],ones(out)),[],[],intypex,outtypex); +} +if (ok) { +Tparam_lab=evstr(Tparam); +Tparam_sz=size(Tparam_lab,"*"); +if (Tparam_sz>lstsize(lab_2)) { +for (i=1;i<=(Tparam_sz-lstsize(lab_2));i+=1) { +lab_2[$+1-1]="0"; +} +} else if (Tparam_sz<lstsize(lab_2)) { +lab_2_tmp=list(); +if (Tparam_sz!=0) { +for (i=1;i<=(lstsize(lab_2)-Tparam_sz);i+=1) { +lab_2_tmp[i-1]=lab_2[i-1]; +} +} +lab_2=lab_2_tmp; +} +if (Tparam_sz!=0) { +lhs_txt=""; +lab_txt=""; +rhs_txt=""; +for (i=1;i<=Tparam_sz;i+=1) { +lhs_txt=lhs_txt+"%v"+string(i)+","; +if (pprop[i-1]==0) { +lab_txt=lab_txt+"\'"+Tparam_lab(i)+"\';"; +} else if (pprop[i-1]==1) { +lab_txt=lab_txt+"\'"+Tparam_lab(i)+" (state) \';"; +} else if (pprop[i-1]==2) { +lab_txt=lab_txt+"\'"+Tparam_lab(i)+" (fixed state) \';"; +} +rhs_txt=rhs_txt+"\'vec\',-1,"; +} +lhs_txt=part(lhs_txt,1,length(lhs_txt)-1); +lab_txt=part(lab_txt,1,length(lab_txt)-1); +rhs_txt=part(rhs_txt,1,length(rhs_txt)-1); +getvalue_txt="[ok,"+lhs_txt+",lab_2]=scicos_getvalue(\'Set parameters values\',["+lab_txt+"],"+"list("+rhs_txt+"),lab_2)"; +execstr(getvalue_txt); +if (!ok) { +lab_2=exprs.paramv; +} +} +} +if (ok) { +paramv=list(); +for (i=1;i<=Tparam_sz;i+=1) { +execstr("paramv("+string(i)+")=%v"+string(i)); +} +} +if (ok) { +if (extF==".mo"&&fileinfo(funam)!=[]) { +tt=mgetl(funam); +} else { +tt=exprs.funtxt; +mo=model.equations; +if (mo.model!=nameF) { +tt=[]; +} +} +[ok,tt]=MODCOM(funam,tt,in1,out,param,paramv,pprop); +if (!ok) { +break; +} +} +if (ok) { +mo=modelica(); +mo.model=nameF; +mo.inputs=in1; +mo.outputs=out; +if (max(pprop)>0) { +mo.parameters=list(transpose(param),paramv,transpose(pprop)); +} else { +mo.parameters=list(transpose(param),paramv); +} +model.equations=mo; +model.rpar=[]; +for (i=1;i<=lstsize(paramv);i+=1) { +model.rpar=[[model.rpar],[paramv[i-1].slice()]]; +} +model.sim[1-1]=funam; +exprs.in1=lab_1(1); +exprs.intype=lab_1(2); +exprs.out=lab_1(3); +exprs.outtype=lab_1(4); +exprs.param=lab_1(5); +exprs.paramv=list(); +if (Tparam_sz!=0) { +if (type(lab_2)==15) { +for (i=1;i<=lstsize(lab_2);i+=1) { +exprs.paramv[i-1]=lab_2[i-1]; +} +} else { +for (i=1;i<=size(lab_2,"*");i+=1) { +exprs.paramv[i-1]=lab_2[i-1]; +} +} +} +exprs.pprop=lab_1(6); +exprs.nameF=lab_1(7); +exprs.funtxt=tt; +x.model=model; +graphics.gr_i[1-1][1-1]="txt=[\'Modelica\';\' "+nameF+" \'];"; +graphics.in_implicit=intype; +graphics.out_implicit=outtype; +graphics.exprs=exprs; +x.graphics=graphics; +break; +} +} +} +} +/* autogenerated from "macros/Misc/MPBLOCK.sci" */ +function MPBLOCK() { +MPBLOCK.prototype.define = function MPBLOCK() { +in1=["u"]; +intype=["I"]; +out=[["y1"],["y2"]]; +outtype=[["I"],["I"]]; +param=[]; +paramv=list(); +pprop=[]; +nameF="myModel"; +exprs=tlist(["MPBLOCK","in","intype","out","outtype","param","paramv","pprop","nameF","funtxt"],sci2exp(in1.slice()),sci2exp(intype.slice()),sci2exp(out.slice()),sci2exp(outtype.slice()),sci2exp(param.slice()),list(string(0.1),string(.0001)),sci2exp(pprop.slice()),nameF,[]); +model=scicos_model(); +model.blocktype="c"; +model.dep_ut=[true,true]; +model.rpar=[]; +for (i=1;i<=lstsize(paramv);i+=1) { +model.rpar=[[model.rpar],[paramv[i-1].slice()]]; +} +mo=modelica(); +mo.model=nameF; +mo.parameters=list(param,paramv); +model.sim=list(mo.model,10004); +mo.inputs=in1; +mo.outputs=out; +model.in1=ones(size(mo.inputs,"r"),1); +model.out=ones(size(mo.outputs,"r"),1); +model.equations=mo; +gr_i=[]; +x=standard_define([3,2],model,exprs,gr_i); +x.graphics.in_implicit=intype; +x.graphics.out_implicit=outtype; +} +MPBLOCK.prototype.details = function MPBLOCK() { +} +MPBLOCK.prototype.get = function MPBLOCK() { +} +MPBLOCK.prototype.set = function MPBLOCK() { +x=arg1; +model=arg1.model; +graphics=arg1.graphics; +exprs=graphics.exprs; +if (type(exprs)==15) { +paramv=list(); +pprop=[]; +for (i=1;i<=size(model.rpar,"*");i+=1) { +paramv[$+1-1]=string(model.rpar(i)); +pprop[$+1-1]=0; +} +exprs=tlist(["MPBLOCK","in","intype","out","outtype","param","paramv","pprop","nameF","funtxt"],exprs[1-1](1),exprs[1-1](2),exprs[1-1](3),exprs[1-1](4),exprs[1-1](5),paramv,sci2exp(pprop.slice()),exprs[1-1](7),exprs[2-1]); +} +lab_1=list(exprs.in1,exprs.intype,exprs.out,exprs.outtype,exprs.param,exprs.pprop,exprs.nameF); +lab_2=exprs.paramv; +while (true) { +[ok,Tin,Tintype,Tout,Touttype,Tparam,pprop,Tfunam,lab_1]=getvalue("Set Modelica generic block parameters",[["Input variables: "],["Input variables types: "],["Output variables: "],["Output variables types:"],["Parameters in Modelica:"],["Parameters properties: "],["Model name in packages:"]],list("str",-1,"str",-1,"str",-1,"str",-1,"str",-1,"vec",-1,"str",-1),lab_1); +if (!ok) { +break; +} +ierr=execstr("in=stripblanks(evstr(Tin)); intype=stripblanks(evstr(Tintype)); out=stripblanks(evstr(Tout)); outtype=stripblanks(evstr(Touttype)); param=stripblanks(evstr(Tparam)); funam=stripblanks(Tfunam)","errcatch"); +if (ierr!=0) { +x_message("Error in evaluation of variables."); +ok=false; +} +if (ok) { +for (i=1;i<=size(in1,"*");i+=1) { +r=false; +ierr=execstr("r=validvar(in(i))","errcatch"); +if (!r) { +ok=false; +break; +} +} +if (!ok) { +x_message([["Invalid variable name for the input "+string(i)+"."],["\""+in1(i)+"\""],["Please choose another variable name."]]); +} +} +if (ok) { +for (i=1;i<=size(out,"*");i+=1) { +r=false; +ierr=execstr("r=validvar(out(i))","errcatch"); +if (!r) { +ok=false; +break; +} +} +if (!ok) { +x_message([["Invalid variable name for the output "+string(i)+"."],["\""+out(i)+"\""],["Please choose another variable name."]]); +} +} +if (ok) { +param=param.slice(); +for (i=1;i<=size(param,"*");i+=1) { +r=false; +ierr=execstr("r=validvar(param(i))","errcatch"); +if (!r) { +ok=false; +break; +} +} +if (!ok) { +x_message([["Invalid variable name for the parameter "+string(i)+"."],["\""+param[i-1]+"\""],["Please choose another variable name."]]); +} +} +if (ok) { +for (i=1;i<=size(intype,"*");i+=1) { +if (intype(i)!="E"&&intype(i)!="I") { +x_message("Input type should be \'E\' or \'I\'!"); +ok=false; +break; +} +} +} +if (ok) { +for (i=1;i<=size(outtype,"*");i+=1) { +if (outtype(i)!="E"&&outtype(i)!="I") { +x_message("Output type should be \'E\' or \'I\'!"); +ok=false; +break; +} +} +} +if (ok) { +if (or(size(intype)!=size(in1))) { +x_message("Input variables are not well defined!"); +ok=false; +} +} +if (ok) { +if (or(size(outtype)!=size(out))) { +x_message("Output variables are not well defined!"); +ok=false; +} +} +if (ok) { +pprop=pprop.slice(); +if ((size(param,"*")!=size(pprop,"*"))) { +x_message([["There is differences in"],["size of param and size "],["of param properties."]]); +ok=false; +} +} +if (ok) { +if (max(pprop)>2||min(pprop)<0) { +x_message([["Parameters properties must be :"],["0 : if it is a paramaters"],["1 : if it is an initial value of state,"],["2 : it it is a fixed initial state value."]]); +ok=false; +} +} +if (ok) { +if (funam=="") { +x_message("The model name is not defined!"); +ok=false; +} +} +if (ok) { +[dirF,nameF,extF]=fileparts(funam); +if ((extF!="")||(dirF!="")) { +x_message("Invalid model name!"); +ok=false; +} +} +if (ok) { +intypex=find(intype=="I"); +outtypex=find(outtype=="I"); +[model,graphics,ok]=set_io(model,graphics,list([ones(in1),ones(in1)],ones(in1)),list([ones(out),ones(out)],ones(out)),[],[],intypex,outtypex); +} +if (ok) { +Tparam_lab=evstr(Tparam); +Tparam_sz=size(Tparam_lab,"*"); +if (Tparam_sz>lstsize(lab_2)) { +for (i=1;i<=(Tparam_sz-lstsize(lab_2));i+=1) { +lab_2[$+1-1]="0"; +} +} else if (Tparam_sz<lstsize(lab_2)) { +lab_2_tmp=list(); +if (Tparam_sz!=0) { +for (i=1;i<=Tparam_sz;i+=1) { +ee=evstr(exprs.param); +for (j=1;j<=size(ee,"r");j+=1) { +if (ee(j)==Tparam_lab(i)) { +lab_2_tmp[i-1]=lab_2[j-1]; +} +} +} +lab_2=lab_2_tmp; +} +} +if (Tparam_sz!=0) { +lhs_txt=""; +lab_txt=""; +rhs_txt=""; +for (i=1;i<=Tparam_sz;i+=1) { +lhs_txt=lhs_txt+"%v"+string(i)+","; +if (pprop[i-1]==0) { +lab_txt=lab_txt+"\'"+Tparam_lab(i)+"\';"; +} else if (pprop[i-1]==1) { +lab_txt=lab_txt+"\'"+Tparam_lab(i)+" (state) \';"; +} else if (pprop[i-1]==2) { +lab_txt=lab_txt+"\'"+Tparam_lab(i)+" (fixed state) \';"; +} +rhs_txt=rhs_txt+"\'vec\',-1,"; +} +lhs_txt=part(lhs_txt,1,length(lhs_txt)-1); +lab_txt=part(lab_txt,1,length(lab_txt)-1); +rhs_txt=part(rhs_txt,1,length(rhs_txt)-1); +getvalue_txt="[ok,"+lhs_txt+",lab_2]=scicos_getvalue(\'Set parameters values\',["+lab_txt+"],"+"list("+rhs_txt+"),lab_2)"; +execstr(getvalue_txt); +if (!ok) { +lab_2=exprs.paramv; +} +} +} +if (ok) { +paramv=list(); +for (i=1;i<=Tparam_sz;i+=1) { +execstr("paramv("+string(i)+")=%v"+string(i)); +} +} +if (ok) { +mo=modelica(); +mo.model=nameF; +mo.inputs=in1; +mo.outputs=out; +if (pprop!=[]) { +if (max(pprop)>0) { +mo.parameters=list(transpose(param),paramv,transpose(pprop)); +} else { +mo.parameters=list(transpose(param),paramv); +} +} +model.equations=mo; +model.rpar=[]; +for (i=1;i<=lstsize(paramv);i+=1) { +model.rpar=[[model.rpar],[double(paramv[i-1].slice())]]; +} +model.sim[1-1]=funam; +exprs.in1=lab_1(1); +exprs.intype=lab_1(2); +exprs.out=lab_1(3); +exprs.outtype=lab_1(4); +exprs.param=lab_1(5); +exprs.paramv=list(); +if (Tparam_sz!=0) { +if (type(lab_2)==15) { +for (i=1;i<=lstsize(lab_2);i+=1) { +exprs.paramv[i-1]=lab_2[i-1]; +} +} else { +for (i=1;i<=size(lab_2,"*");i+=1) { +exprs.paramv[i-1]=lab_2[i-1]; +} +} +} +exprs.pprop=lab_1(6); +exprs.nameF=lab_1(7); +exprs.funtxt=""; +x.model=model; +graphics.gr_i[1-1][1-1]="txt=[\' "+nameF+" \'];"; +graphics.in_implicit=intype; +graphics.out_implicit=outtype; +graphics.exprs=exprs; +x.graphics=graphics; +break; +} +} +} +} /* autogenerated from "macros/Misc/fortran_block.sci" */ function fortran_block() { fortran_block.prototype.define = function fortran_block() { @@ -13211,6 +13749,98 @@ break; } } } +/* autogenerated from "macros/Misc/scifunc_block.sci" */ +function scifunc_block() { +scifunc_block.prototype.define = function scifunc_block() { +in1=1; +out=1; +clkin=[]; +clkout=[]; +x0=[]; +z0=[]; +typ="c"; +auto=[]; +rpar=[]; +model=scicos_model(); +model.sim=list("scifunc",3); +model.in1=in1; +model.out=out; +model.evtin=clkin; +model.evtout=clkout; +model.state=x0; +model.dstate=z0; +model.rpar=rpar; +model.ipar=0; +model.opar=list(); +model.blocktype=typ; +model.firing=auto; +model.dep_ut=[true,false]; +exprs=list([[sci2exp(in1)],[sci2exp(out)],[sci2exp(clkin)],[sci2exp(clkout)],[strcat(sci2exp(x0))],[strcat(sci2exp(z0))],[strcat(sci2exp(rpar))],[sci2exp(auto)]],list("y1=sin(u1)"," "," ","y1=sin(u1)"," "," "," ")); +gr_i=[]; +x=standard_define([2,2],model,exprs,gr_i); +} +scifunc_block.prototype.details = function scifunc_block() { +} +scifunc_block.prototype.get = function scifunc_block() { +} +scifunc_block.prototype.set = function scifunc_block() { +needcompile=0; +x=arg1; +model=arg1.model; +graphics=arg1.graphics; +exprs=graphics.exprs; +if (size(exprs[1-1],"*")==8) { +exprs[1-1][9-1]="0"; +} +while (true) { +[ok,i,o,ci,co,xx,z,rpar,auto0,deptime,lab]=scicos_getvalue([["Set scifunc_block parameters"],["only regular blocks supported"]],[["input ports sizes"],["output port sizes"],["input event ports sizes"],["output events ports sizes"],["initial continuous state"],["initial discrete state"],["System parameters vector"],["initial firing vector (<0 for no firing)"],["is block always active (0:no, 1:yes)"]],list("vec",-1,"vec",-1,"vec",-1,"vec",-1,"vec",-1,"vec",-1,"vec",-1,"vec","sum(%4)","vec",1),exprs[1-1]); +if (!ok) { +break; +} +exprs[1-1]=lab; +xx=xx.slice(); +z=z.slice(); +rpar=rpar.slice(); +nrp=prod(size(rpar)); +i=int(i.slice()); +ni=size(i,1); +o=int(o.slice()); +no=size(o,1); +ci=int(ci.slice()); +nci=size(ci,1); +co=int(co.slice()); +nco=size(co,1); +[ok,tt,dep_ut]=genfunc1(exprs[2-1],i,o,nci,nco,size(xx,1),size(z,1),nrp,"c"); +dep_ut[2-1]=(1==deptime); +if (!ok) { +break; +} +[model,graphics,ok]=check_io(model,graphics,i,o,ci,co); +if (ok) { +auto=auto0; +model.state=xx; +model.dstate=z; +model.rpar=rpar; +if (model.ipar!=0) { +model.opar=model.ipar; +model.ipar=0; +} +if (or(model.opar!=tt)) { +needcompile=4; +} +model.opar=tt; +model.firing=auto; +model.dep_ut=dep_ut; +x.model=model; +exprs[2-1]=tt; +graphics.exprs=exprs; +x.graphics=graphics; +break; +} +} +needcompile=resume(needcompile) +} +} /* autogenerated from "macros/Misc/BACKLASH.sci" */ function BACKLASH() { BACKLASH.prototype.define = function BACKLASH() { @@ -16059,4 +16689,4 @@ x=arg1; } } -/* made from 252/274 files */ +/* made from 255/274 files */ |