dhoward Admin Group
Joined: June 29 2001 Location: United States
Online Status: Offline Posts: 4447
|
Posted: July 21 2004 at 16:36 | IP Logged
|
|
|
Mike,
Ive finished the skeleton for you. You have a couple of Control Center tabs, one to select the dehydrator and one to select the product. What the code amounts to is a couple of tabs, 21 global variables, 3 macros, and 70 sendkeys buttons. There is a global variable defined for each product with the value set to the dehydrator run time in hours. This will allow you to make changes easily as necessary. When a dehydrator is activated, the appropriate "ON" command is sent 5 times, 30 seconds apart. When the dehydrator is shut off, the "OFF" command is sent 5 times, 30 seconds apart.
You'll start on the first tab (SELECT DEHYDRATOR) and select the appropriate dehydrator. This will then store the selected dehydrator in the "CURRENT_DEHYDRATOR" global variable. The CC tab will then be automatically changed for you to the "SELECT PRODUCT" tab. Ive also used a little bit of an obscure function (ph_ccmodify) which will show the currently selected dehydrator in a large font directly on the select product tab. The operator will then select the appropriate product which will then execute the "LAUNCH CYCLE" macro. This macro will send the appropriate "ON" commands and place a usermessage in the eventlog as well as display an appropriate messagebox. These can be easily remmed out if desired. A timedevent is then calculated and created for the "END CYCLE" macro which send the appropriate "OFF" commands for the dehydrator. I used a timedevent rather than a macro wait as I seem to have a bug in the macro wait logic that miscalculates on long macro wait times (this is fixed in the next version).
I didnt really include any error checking to see if a dehydrator is already running or not. You could easily add this later if needed.
Anyways, below is the "Direct SQL" code for you. Just open the Direct SQL screen from the Maintenance menu and copy and paste the code in it. It should churn for a few seconds and then give you the SQL Performed OK message.
insert into customtab values ('SELECT DEHYDRATOR',1,12632256,'','N','N','N'); insert into customtab values ('SELECT PRODUCT',2,12632256,'','N','N','N'); insert into global_variables values ('CURRENT_DEHYDRATOR','A1'); insert into global_variables values ('P_1','13'); insert into global_variables values ('P_2','14'); insert into global_variables values ('P_3','15'); insert into global_variables values ('P_4','16'); insert into global_variables values ('P_5','17'); insert into global_variables values ('P_6','18'); insert into global_variables values ('P_7','19'); insert into global_variables values ('P_8','20'); insert into global_variables values ('P_9','21'); insert into global_variables values ('P_10','22'); insert into global_variables values ('P_11','23'); insert into global_variables values ('P_12','24'); insert into global_variables values ('P_13','25'); insert into global_variables values ('P_14','26'); insert into global_variables values ('P_15','27'); insert into global_variables values ('P_16','28'); insert into global_variables values ('P_17','29'); insert into global_variables values ('P_18','30'); insert into global_variables values ('P_19','31'); insert into global_variables values ('P_20','32'); insert into macroheader values ('SET DEHYDRATOR','SET DEHYDRATOR',4,4,252,96,0,0,0,12632256,0,0,1,'',10); insert into macrodetail values ('SET DEHYDRATOR',1,10,'CURRENT_DEHYDRATOR',NULL,'"[LOCAL1]"',0); insert into macrodetail values ('SET DEHYDRATOR',2,16,'',NULL,'if(ph_ccdescribe(2,"st_cd.text") = "!",1,2)',0); insert into macrodetail values ('SET DEHYDRATOR',3,38,'',0,'ph_ccmodify(2,''create text(name=st_cd pointer="arrow!" band=detail font.charset="0" font.face="Arial" font.family="2" font.height="-18" font.pitch="2" font.weight="400" background.mode="2" background.color="12632256" color="0" alignment="0" border="2" x="100" y="100" height="120" width="1200" text="Current Dehydrator: " )'')',0); insert into macrodetail values ('SET DEHYDRATOR',4,38,'',0,'ph_ccmodify(2,''st_cd.text="Current Dehydrator: [LOCAL1]"'')',0); insert into macrodetail values ('SET DEHYDRATOR',5,38,'',0,'ph_setcctab(2)',0); insert into macroheader values ('LAUNCH CYCLE','LAUNCH CYCLE',4,4,252,96,0,0,0,12632256,0,0,1,'',10); insert into macrodetail values ('LAUNCH CYCLE',2,15,'[TEMP2]',NULL,'left(ph_getglobal_s("CURRENT_DEHYDRATOR"),1)',0); insert into macrodetail values ('LAUNCH CYCLE',4,38,'',0,'ph_x10(1,"[TEMP2]",[TEMP3],0) + ph_x10(1,"[TEMP2]",102,0)',0); insert into macrodetail values ('LAUNCH CYCLE',6,38,'',0,'ph_createtimedevent(2,''ph_macroparm("END CYCLE","[TEMP2][TEMP3]",0,0,0,0)'',[TEMP4])',0); insert into macrodetail values ('LAUNCH CYCLE',8,36,'',NULL,'"Cycle launched on dehydrator [TEMP2][TEMP3] for product [LOCAL1]. Dehydrator will automatically turn off in [TEMP1] hours."',0); insert into macrodetail values ('LAUNCH CYCLE',10,31,'',NULL,'30',0); insert into macrodetail values ('LAUNCH CYCLE',12,31,'',NULL,'30',0); insert into macrodetail values ('LAUNCH CYCLE',14,31,'',NULL,'30',0); insert into macrodetail values ('LAUNCH CYCLE',16,31,'',NULL,'30',0); insert into macrodetail values ('LAUNCH CYCLE',18,37,'',NULL,'We''ve turned the dehydrator on 5 times, 30 seconds apart.',0); insert into macrodetail values ('LAUNCH CYCLE',1,15,'[TEMP1]',NULL,'ph_getglobal_s("P_[LOCAL1]")',0); insert into macrodetail values ('LAUNCH CYCLE',3,15,'[TEMP3]',NULL,'mid(ph_getglobal_s("CURRENT_DEHYDRATOR"),2)',0); insert into macrodetail values ('LAUNCH CYCLE',5,15,'[TEMP4]',NULL,'string(ph_relativedatetime(today(),[TEMP1] * 60),''yyyy-mm-dd hh:mm:ss'')',0); insert into macrodetail values ('LAUNCH CYCLE',7,38,'',0,'ph_setcctab(1)',0); insert into macrodetail values ('LAUNCH CYCLE',9,24,'No TTS',1,'"Cycle launched on dehydrator [TEMP2][TEMP3] for product [LOCAL1]. Dehydrator will automatically turn off in [TEMP1] hours."',0); insert into macrodetail values ('LAUNCH CYCLE',11,38,'',0,'ph_x10(1,"[TEMP2]",[TEMP3],0) + ph_x10(1,"[TEMP2]",102,0)',0); insert into macrodetail values ('LAUNCH CYCLE',13,38,'',0,'ph_x10(1,"[TEMP2]",[TEMP3],0) + ph_x10(1,"[TEMP2]",102,0)',0); insert into macrodetail values ('LAUNCH CYCLE',15,38,'',0,'ph_x10(1,"[TEMP2]",[TEMP3],0) + ph_x10(1,"[TEMP2]",102,0)',0); insert into macrodetail values ('LAUNCH CYCLE',17,38,'',0,'ph_x10(1,"[TEMP2]",[TEMP3],0) + ph_x10(1,"[TEMP2]",102,0)',0); insert into macroheader values ('END CYCLE','END CYCLE',4,4,252,96,0,0,0,12632256,0,0,1,'',10); insert into macrodetail values ('END CYCLE',2,15,'[TEMP3]',NULL,'mid("[LOCAL1]",2)',0); insert into macrodetail values ('END CYCLE',4,31,'',NULL,'30',0); insert into macrodetail values ('END CYCLE',6,31,'',NULL,'30',0); insert into macrodetail values ('END CYCLE',8,31,'',NULL,'30',0); insert into macrodetail values ('END CYCLE',10,31,'',NULL,'30',0); insert into macrodetail values ('END CYCLE',12,37,'',NULL,'We''ve sent the "OFF" command 5 times, 30 seconds apart. We can now exit.',0); insert into macrodetail values ('END CYCLE',1,15,'[TEMP2]',NULL,'left("[LOCAL1]",1)',0); insert into macrodetail values ('END CYCLE',3,38,'',0,'ph_x10(1,"[TEMP2]",[TEMP3],0) + ph_x10(1,"[TEMP2]",103,0)',0); insert into macrodetail values ('END CYCLE',5,38,'',0,'ph_x10(1,"[TEMP2]",[TEMP3],0) + ph_x10(1,"[TEMP2]",103,0)',0); insert into macrodetail values ('END CYCLE',7,38,'',0,'ph_x10(1,"[TEMP2]",[TEMP3],0) + ph_x10(1,"[TEMP2]",103,0)',0); insert into macrodetail values ('END CYCLE',9,38,'',0,'ph_x10(1,"[TEMP2]",[TEMP3],0) + ph_x10(1,"[TEMP2]",103,0)',0); insert into macrodetail values ('END CYCLE',11,38,'',0,'ph_x10(1,"[TEMP2]",[TEMP3],0) + ph_x10(1,"[TEMP2]",103,0)',0); insert into sendkeys values ('A1','A1',120,88,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","A1",0,0,0,0))',10); insert into sendkeys values ('A2','A2',444,88,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","A2",0,0,0,0))',10); insert into sendkeys values ('A3','A3',768,88,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","A3",0,0,0,0))',10); insert into sendkeys values ('A4','A4',1092,88,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","A4",0,0,0,0))',10); insert into sendkeys values ('A5','A5',1416,88,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","A5",0,0,0,0))',10); insert into sendkeys values ('A6','A6',1740,88,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","A6",0,0,0,0))',10); insert into sendkeys values ('A7','A7',2064,88,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","A7",0,0,0,0))',10); insert into sendkeys values ('A8','A8',2388,88,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","A8",0,0,0,0))',10); insert into sendkeys values ('A9','A9',2712,88,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","A9",0,0,0,0))',10); insert into sendkeys values ('A10','A10',3036,88,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","A10",0,0,0,0))',10); insert into sendkeys values ('B1','B1',120,264,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","B1",0,0,0,0))',10); insert into sendkeys values ('B2','B2',444,264,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","B2",0,0,0,0))',10); insert into sendkeys values ('B3','B3',768,264,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","B3",0,0,0,0))',10); insert into sendkeys values ('B4','B4',1092,264,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","B4",0,0,0,0))',10); insert into sendkeys values ('B5','B5',1416,264,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","B5",0,0,0,0))',10); insert into sendkeys values ('B6','B6',1740,264,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","B6",0,0,0,0))',10); insert into sendkeys values ('B7','B7',2064,264,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","B7",0,0,0,0))',10); insert into sendkeys values ('B8','B8',2388,264,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","B8",0,0,0,0))',10); insert into sendkeys values ('B9','B9',2712,264,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","B9",0,0,0,0))',10); insert into sendkeys values ('B10','B10',3036,264,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","B10",0,0,0,0))',10); insert into sendkeys values ('C1','C1',120,440,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","C1",0,0,0,0))',10); insert into sendkeys values ('C2','C2',444,440,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","C2",0,0,0,0))',10); insert into sendkeys values ('C3','C3',768,440,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","C3",0,0,0,0))',10); insert into sendkeys values ('C4','C4',1092,440,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","C4",0,0,0,0))',10); insert into sendkeys values ('C5','C5',1416,440,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","C5",0,0,0,0))',10); insert into sendkeys values ('C6','C6',1740,440,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","C6",0,0,0,0))',10); insert into sendkeys values ('C7','C7',2064,440,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","C7",0,0,0,0))',10); insert into sendkeys values ('C8','C8',2388,440,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","C8",0,0,0,0))',10); insert into sendkeys values ('C9','C9',2712,440,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","C9",0,0,0,0))',10); insert into sendkeys values ('C10','C10',3036,440,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","C10",0,0,0,0))',10); insert into sendkeys values ('D1','D1',120,616,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","D1",0,0,0,0))',10); insert into sendkeys values ('D2','D2',444,616,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","D2",0,0,0,0))',10); insert into sendkeys values ('D3','D3',768,616,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","D3",0,0,0,0))',10); insert into sendkeys values ('D4','D4',1092,616,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","D4",0,0,0,0))',10); insert into sendkeys values ('D5','D5',1416,616,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","D5",0,0,0,0))',10); insert into sendkeys values ('D6','D6',1740,616,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","D6",0,0,0,0))',10); insert into sendkeys values ('D7','D7',2064,616,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","D7",0,0,0,0))',10); insert into sendkeys values ('D8','D8',2388,616,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","D8",0,0,0,0))',10); insert into sendkeys values ('D9','D9',2712,616,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","D9",0,0,0,0))',10); insert into sendkeys values ('D10','D10',3036,616,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","D10",0,0,0,0))',10); insert into sendkeys values ('E1','E1',120,792,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","E1",0,0,0,0))',10); insert into sendkeys values ('E2','E2',444,792,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","E2",0,0,0,0))',10); insert into sendkeys values ('E3','E3',768,792,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","E3",0,0,0,0))',10); insert into sendkeys values ('E4','E4',1092,792,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","E4",0,0,0,0))',10); insert into sendkeys values ('E5','E5',1416,792,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","E5",0,0,0,0))',10); insert into sendkeys values ('E6','E6',1740,792,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","E6",0,0,0,0))',10); insert into sendkeys values ('E7','E7',2064,792,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","E7",0,0,0,0))',10); insert into sendkeys values ('E8','E8',2388,792,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","E8",0,0,0,0))',10); insert into sendkeys values ('E9','E9',2712,792,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","E9",0,0,0,0))',10); insert into sendkeys values ('E10','E10',3036,792,252,96,0,0,0,12632256,'SELECT DEHYDRATOR','ph_rtne(ph_macroparm("SET DEHYDRATOR","E10",0,0,0,0))',10); insert into sendkeys values ('P_1','PRODUCT 1',344,344,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",1,0,0,0,0))',10); insert into sendkeys values ('P_2','PRODUCT 2',664,344,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",2,0,0,0,0))',10); insert into sendkeys values ('P_3','PRODUCT 3',984,344,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",3,0,0,0,0))',10); insert into sendkeys values ('P_4','PRODUCT 4',1304,344,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",4,0,0,0,0))',10); insert into sendkeys values ('P_5','PRODUCT 5',1624,344,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",5,0,0,0,0))',10); insert into sendkeys values ('P_6','PRODUCT 6',344,528,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",6,0,0,0,0))',10); insert into sendkeys values ('P_7','PRODUCT 7',664,528,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",7,0,0,0,0))',10); insert into sendkeys values ('P_8','PRODUCT 8',984,528,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",8,0,0,0,0))',10); insert into sendkeys values ('P_9','PRODUCT 9',1304,528,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",9,0,0,0,0))',10); insert into sendkeys values ('P_10','PRODUCT 10',1624,528,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",10,0,0,0,0))',10); insert into sendkeys values ('P_11','PRODUCT 11',344,712,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",11,0,0,0,0))',10); insert into sendkeys values ('P_12','PRODUCT 12',664,712,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",12,0,0,0,0))',10); insert into sendkeys values ('P_13','PRODUCT 13',984,712,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",13,0,0,0,0))',10); insert into sendkeys values ('P_14','PRODUCT 14',1304,712,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",14,0,0,0,0))',10); insert into sendkeys values ('P_15','PRODUCT 15',1624,712,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",15,0,0,0,0))',10); insert into sendkeys values ('P_16','PRODUCT 16',344,896,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",16,0,0,0,0))',10); insert into sendkeys values ('P_17','PRODUCT 17',664,896,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",17,0,0,0,0))',10); insert into sendkeys values ('P_18','PRODUCT 18',984,896,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",18,0,0,0,0))',10); insert into sendkeys values ('P_19','PRODUCT 19',1304,896,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",19,0,0,0,0))',10); insert into sendkeys values ('P_20','PRODUCT 20',1624,896,228,96,0,0,0,12632256,'SELECT PRODUCT','ph_rtne(ph_macroparm("LAUNCH CYCLE",20,0,0,0,0))',10);
Hope this helps,
Dave.
|