Built motion from commit 953226e6.|2.6.32
[motion2.git] / server / config / triggers / index.js
index e1092c6..99c7aa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98c4=['jayson/promise','../logger','triggers','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','error','code','Trigger,\x20%s','get','channel','motionChannel','event','direction','resolve','ContactId','undefined','sequelize','query','QueryTypes','contact','UserId','interface','SIP/%s','name','agent','incomingmessage','outgoingmessage','AfterCreateMessage','offlineMessage','opened','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','SELECT','format','AfterCreate','changed','closed','substatus','catch','AfterUpdate','User','find','email','default','length','hasOwnProperty','hook','callback','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x98c4,0x17b));var _0x498c=function(_0x3ecd7d,_0x52140d){_0x3ecd7d=_0x3ecd7d-0x0;var _0x38ea7a=_0x98c4[_0x3ecd7d];return _0x38ea7a;};'use strict';var util=require('util');var db=require(_0x498c('0x0'))['db'];var jayson=require(_0x498c('0x1'));var logger=require(_0x498c('0x2'))(_0x498c('0x3'));var client=jayson[_0x498c('0x4')][_0x498c('0x5')]({'port':0x232a});var triggers=[{'channel':_0x498c('0x6'),'model':_0x498c('0x7'),'event':_0x498c('0x8'),'condition':_0x498c('0x9'),'callback':afterCreate},{'channel':_0x498c('0x6'),'model':_0x498c('0x7'),'event':_0x498c('0xa'),'condition':_0x498c('0xb'),'callback':afterUpdate},{'channel':_0x498c('0x6'),'model':_0x498c('0xc'),'event':_0x498c('0x8'),'condition':_0x498c('0xd'),'callback':afterCreateMessage},{'channel':_0x498c('0x6'),'model':_0x498c('0xe'),'event':_0x498c('0x8'),'condition':_0x498c('0xd'),'callback':afterCreateOfflineMessage},{'channel':_0x498c('0xf'),'model':_0x498c('0x10'),'event':_0x498c('0x8'),'condition':_0x498c('0x9'),'callback':afterCreate},{'channel':_0x498c('0xf'),'model':'SmsInteraction','event':_0x498c('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Sms','model':_0x498c('0x11'),'event':_0x498c('0x8'),'condition':_0x498c('0xd'),'callback':afterCreateMessage},{'channel':_0x498c('0x12'),'model':'WhatsappInteraction','event':_0x498c('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':'Whatsapp','model':_0x498c('0x13'),'event':'afterUpdate','condition':_0x498c('0xb'),'callback':afterUpdate},{'channel':_0x498c('0x12'),'model':_0x498c('0x14'),'event':_0x498c('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x498c('0x15'),'model':_0x498c('0x16'),'event':_0x498c('0x8'),'condition':_0x498c('0x9'),'callback':afterCreate},{'channel':_0x498c('0x15'),'model':_0x498c('0x16'),'event':_0x498c('0xa'),'condition':_0x498c('0xb'),'callback':afterUpdate},{'channel':'Fax','model':_0x498c('0x17'),'event':_0x498c('0x8'),'condition':_0x498c('0xd'),'callback':afterCreateMessage},{'channel':_0x498c('0x18'),'model':_0x498c('0x19'),'event':_0x498c('0x8'),'condition':_0x498c('0x9'),'callback':afterCreate},{'channel':'Mail','model':_0x498c('0x19'),'event':_0x498c('0xa'),'condition':_0x498c('0xb'),'callback':afterUpdate},{'channel':_0x498c('0x18'),'model':_0x498c('0x1a'),'event':'afterCreate','condition':_0x498c('0xd'),'callback':afterCreateMessage},{'channel':_0x498c('0x1b'),'model':_0x498c('0x1c'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x498c('0x1b'),'model':_0x498c('0x1c'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':'Openchannel','model':_0x498c('0x1d'),'event':'afterCreate','condition':_0x498c('0xd'),'callback':afterCreateMessage}];function request(_0x241ec8){return client[_0x498c('0x1e')](_0x498c('0x1f'),_0x241ec8)[_0x498c('0x20')](function(_0x6d2572){logger['info']('Trigger,\x20%s',_0x498c('0x1f'),_0x6d2572);if(_0x6d2572['error']){if(_0x6d2572[_0x498c('0x21')][_0x498c('0x22')]===0x1f4){logger['error'](_0x498c('0x23'),'EventManager',_0x6d2572[_0x498c('0x21')]);}}})['catch'](function(_0x47d395){logger[_0x498c('0x21')](_0x498c('0x23'),_0x498c('0x1f'),_0x47d395);});}function afterCreateMessage(_0x33603a){return function(_0x451b07){_0x451b07=_0x451b07[_0x498c('0x24')]({'plain':!![]});_0x451b07[_0x498c('0x25')]=_0x33603a;_0x451b07[_0x498c('0x26')]=_0x33603a;_0x451b07[_0x498c('0x27')]=_0x451b07[_0x498c('0x28')];Promise[_0x498c('0x29')]()['then'](function(){if(typeof _0x451b07[_0x498c('0x2a')]===_0x498c('0x2b'))return null;var _0x243a7d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x451b07[_0x498c('0x2a')];return db[_0x498c('0x2c')][_0x498c('0x2d')](_0x243a7d,{'type':db['Sequelize'][_0x498c('0x2e')]['SELECT'],'raw':!![]});})['then'](function(_0x2cc115){if(_0x2cc115){_0x451b07[_0x498c('0x2f')]=_0x2cc115[0x0];}if(typeof _0x451b07[_0x498c('0x30')]===_0x498c('0x2b'))return;return getAgent(_0x451b07['UserId']);})[_0x498c('0x20')](function(_0x32aa07){if(_0x32aa07){_0x451b07[_0x498c('0x31')]=util['format'](_0x498c('0x32'),_0x32aa07[_0x498c('0x33')]);_0x451b07[_0x498c('0x34')]=_0x32aa07;_0x451b07['channel']=_0x33603a;return request({'event':_0x498c('0x35'),'message':_0x451b07});}else{return request({'event':_0x498c('0x36'),'message':_0x451b07});}})['catch'](function(_0x45c5be){logger[_0x498c('0x21')](_0x498c('0x23'),_0x498c('0x37'),_0x45c5be);});};}function afterCreateOfflineMessage(_0x3caae1){return function(_0x4a8c4f){_0x4a8c4f=_0x4a8c4f[_0x498c('0x24')]({'plain':!![]});_0x4a8c4f['channel']=_0x3caae1;_0x4a8c4f['motionChannel']=_0x3caae1;_0x4a8c4f[_0x498c('0x27')]=_0x498c('0x38');return request({'event':_0x4a8c4f[_0x498c('0x27')],'message':_0x4a8c4f});};}function afterCreate(_0x5f235b,_0x11eee9){return function(_0x2b3595){_0x2b3595=_0x2b3595[_0x498c('0x24')]({'plain':!![]});_0x2b3595['channel']=_0x5f235b;_0x2b3595[_0x498c('0x26')]=_0x5f235b;_0x2b3595[_0x498c('0x27')]=_0x498c('0x39');Promise[_0x498c('0x29')]()[_0x498c('0x20')](function(){var _0x2a22c0=_0x498c('0x3a')+_0x2b3595[_0x498c('0x2a')];return db[_0x498c('0x2c')][_0x498c('0x2d')](_0x2a22c0,{'type':db[_0x498c('0x3b')][_0x498c('0x2e')][_0x498c('0x3c')],'raw':!![]});})[_0x498c('0x20')](function(_0x397e0e){if(_0x397e0e){_0x2b3595[_0x498c('0x2f')]=_0x397e0e[0x0];}if(typeof _0x2b3595[_0x498c('0x30')]==='undefined')return;return getAgent(_0x2b3595[_0x498c('0x30')]);})[_0x498c('0x20')](function(_0x2c8eaf){if(_0x2c8eaf){_0x2b3595[_0x498c('0x31')]=util[_0x498c('0x3d')]('SIP/%s',_0x2c8eaf[_0x498c('0x33')]);_0x2b3595['agent']=_0x2c8eaf;}return request({'event':_0x11eee9,'message':_0x2b3595});})['catch'](function(_0x6d0dea){logger[_0x498c('0x21')]('Trigger,\x20%s',_0x498c('0x3e'),_0x6d0dea);});};}function afterUpdate(_0x275637){return function(_0x987804){var _0x531e26=_0x987804[_0x498c('0x3f')](_0x498c('0x40'))&&_0x987804[_0x498c('0x40')];var _0x39d924=_0x987804[_0x498c('0x3f')](_0x498c('0x41'));if(_0x531e26||_0x39d924){var _0x40a7b2=_0x531e26?_0x498c('0xb'):'substatus';var _0x1060f1=_0x987804['get']({'plain':!![]});_0x1060f1[_0x498c('0x25')]=_0x275637;_0x1060f1['motionChannel']=_0x275637;_0x1060f1['event']=_0x531e26?_0x498c('0x40'):'substatus';var _0x5dabfe=_0x498c('0x3a')+_0x1060f1[_0x498c('0x2a')];return db['sequelize'][_0x498c('0x2d')](_0x5dabfe,{'type':db[_0x498c('0x3b')][_0x498c('0x2e')][_0x498c('0x3c')],'raw':!![]})[_0x498c('0x20')](function(_0x5da567){if(_0x5da567){_0x1060f1[_0x498c('0x2f')]=_0x5da567[0x0];}if(typeof _0x1060f1['UserId']===_0x498c('0x2b'))return;return getAgent(_0x1060f1['UserId']);})[_0x498c('0x20')](function(_0x3c87e7){if(_0x3c87e7){_0x1060f1[_0x498c('0x31')]=util[_0x498c('0x3d')]('SIP/%s',_0x3c87e7['name']);_0x1060f1[_0x498c('0x34')]=_0x3c87e7;}return request({'event':_0x40a7b2,'message':_0x1060f1});})[_0x498c('0x42')](function(_0x405451){logger[_0x498c('0x21')]('Trigger,\x20%s',_0x498c('0x43'),_0x405451);});}};}function getAgent(_0x3e5f4c){return db[_0x498c('0x44')][_0x498c('0x45')]({'where':{'id':_0x3e5f4c},'attributes':['id',_0x498c('0x33'),'fullname',_0x498c('0x46'),'internal'],'raw':!![]})[_0x498c('0x20')](function(_0x17af88){return _0x17af88;});}exports[_0x498c('0x47')]=function(){for(var _0x2d76b9=0x0;_0x2d76b9<triggers[_0x498c('0x48')];_0x2d76b9+=0x1){if(db[_0x498c('0x49')](triggers[_0x2d76b9]['model'])){db[triggers[_0x2d76b9]['model']][_0x498c('0x4a')](triggers[_0x2d76b9][_0x498c('0x27')],triggers[_0x2d76b9][_0x498c('0x4b')](triggers[_0x2d76b9]['channel']['toLowerCase'](),triggers[_0x2d76b9]['condition']));}}};
\ No newline at end of file
+var _0xb98b=['User','find','fullname','email','internal','default','length','hasOwnProperty','hook','toLowerCase','condition','../../mysqldb','jayson/promise','triggers','client','http','Chat','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','FaxInteraction','Fax','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','info','error','Trigger,\x20%s','get','motionChannel','event','direction','resolve','ContactId','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','QueryTypes','SELECT','contact','UserId','undefined','name','agent','channel','outgoingmessage','AfterCreateMessage','offlineMessage','opened','Sequelize','catch','changed','closed','substatus','SIP/%s','AfterUpdate'];(function(_0x4cecbd,_0x103c9c){var _0x143b0c=function(_0x453d0d){while(--_0x453d0d){_0x4cecbd['push'](_0x4cecbd['shift']());}};_0x143b0c(++_0x103c9c);}(_0xb98b,0x12f));var _0xbb98=function(_0x30c0af,_0x45701d){_0x30c0af=_0x30c0af-0x0;var _0x357cd1=_0xb98b[_0x30c0af];return _0x357cd1;};'use strict';var util=require('util');var db=require(_0xbb98('0x0'))['db'];var jayson=require(_0xbb98('0x1'));var logger=require('../logger')(_0xbb98('0x2'));var client=jayson[_0xbb98('0x3')][_0xbb98('0x4')]({'port':0x232a});var triggers=[{'channel':_0xbb98('0x5'),'model':'ChatInteraction','event':_0xbb98('0x6'),'condition':_0xbb98('0x7'),'callback':afterCreate},{'channel':'Chat','model':'ChatInteraction','event':_0xbb98('0x8'),'condition':_0xbb98('0x9'),'callback':afterUpdate},{'channel':_0xbb98('0x5'),'model':_0xbb98('0xa'),'event':'afterCreate','condition':_0xbb98('0xb'),'callback':afterCreateMessage},{'channel':'Chat','model':_0xbb98('0xc'),'event':_0xbb98('0x6'),'condition':_0xbb98('0xb'),'callback':afterCreateOfflineMessage},{'channel':_0xbb98('0xd'),'model':_0xbb98('0xe'),'event':'afterCreate','condition':_0xbb98('0x7'),'callback':afterCreate},{'channel':_0xbb98('0xd'),'model':_0xbb98('0xe'),'event':_0xbb98('0x8'),'condition':_0xbb98('0x9'),'callback':afterUpdate},{'channel':'Sms','model':_0xbb98('0xf'),'event':_0xbb98('0x6'),'condition':_0xbb98('0xb'),'callback':afterCreateMessage},{'channel':_0xbb98('0x10'),'model':_0xbb98('0x11'),'event':_0xbb98('0x6'),'condition':_0xbb98('0x7'),'callback':afterCreate},{'channel':'Whatsapp','model':_0xbb98('0x11'),'event':_0xbb98('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xbb98('0x10'),'model':_0xbb98('0x12'),'event':_0xbb98('0x6'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Fax','model':_0xbb98('0x13'),'event':_0xbb98('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xbb98('0x14'),'model':_0xbb98('0x13'),'event':_0xbb98('0x8'),'condition':_0xbb98('0x9'),'callback':afterUpdate},{'channel':_0xbb98('0x14'),'model':_0xbb98('0x15'),'event':_0xbb98('0x6'),'condition':_0xbb98('0xb'),'callback':afterCreateMessage},{'channel':_0xbb98('0x16'),'model':_0xbb98('0x17'),'event':_0xbb98('0x6'),'condition':_0xbb98('0x7'),'callback':afterCreate},{'channel':_0xbb98('0x16'),'model':'MailInteraction','event':_0xbb98('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xbb98('0x16'),'model':_0xbb98('0x18'),'event':_0xbb98('0x6'),'condition':_0xbb98('0xb'),'callback':afterCreateMessage},{'channel':_0xbb98('0x19'),'model':_0xbb98('0x1a'),'event':_0xbb98('0x6'),'condition':_0xbb98('0x7'),'callback':afterCreate},{'channel':_0xbb98('0x19'),'model':_0xbb98('0x1a'),'event':_0xbb98('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xbb98('0x19'),'model':_0xbb98('0x1b'),'event':_0xbb98('0x6'),'condition':_0xbb98('0xb'),'callback':afterCreateMessage}];function request(_0x13a3f7){return client[_0xbb98('0x1c')](_0xbb98('0x1d'),_0x13a3f7)[_0xbb98('0x1e')](function(_0x4c35a0){logger[_0xbb98('0x1f')]('Trigger,\x20%s',_0xbb98('0x1d'),_0x4c35a0);if(_0x4c35a0[_0xbb98('0x20')]){if(_0x4c35a0['error']['code']===0x1f4){logger[_0xbb98('0x20')](_0xbb98('0x21'),_0xbb98('0x1d'),_0x4c35a0[_0xbb98('0x20')]);}}})['catch'](function(_0x116a8f){logger['error'](_0xbb98('0x21'),_0xbb98('0x1d'),_0x116a8f);});}function afterCreateMessage(_0x18af5b){return function(_0x1a8a75){_0x1a8a75=_0x1a8a75[_0xbb98('0x22')]({'plain':!![]});_0x1a8a75['channel']=_0x18af5b;_0x1a8a75[_0xbb98('0x23')]=_0x18af5b;_0x1a8a75[_0xbb98('0x24')]=_0x1a8a75[_0xbb98('0x25')];Promise[_0xbb98('0x26')]()[_0xbb98('0x1e')](function(){if(typeof _0x1a8a75[_0xbb98('0x27')]==='undefined')return null;var _0x515f98=_0xbb98('0x28')+_0x1a8a75['ContactId'];return db[_0xbb98('0x29')][_0xbb98('0x2a')](_0x515f98,{'type':db['Sequelize'][_0xbb98('0x2b')][_0xbb98('0x2c')],'raw':!![]});})[_0xbb98('0x1e')](function(_0x24b919){if(_0x24b919){_0x1a8a75[_0xbb98('0x2d')]=_0x24b919[0x0];}if(typeof _0x1a8a75[_0xbb98('0x2e')]===_0xbb98('0x2f'))return;return getAgent(_0x1a8a75[_0xbb98('0x2e')]);})['then'](function(_0x1352e4){if(_0x1352e4){_0x1a8a75['interface']=util['format']('SIP/%s',_0x1352e4[_0xbb98('0x30')]);_0x1a8a75[_0xbb98('0x31')]=_0x1352e4;_0x1a8a75[_0xbb98('0x32')]=_0x18af5b;return request({'event':'incomingmessage','message':_0x1a8a75});}else{return request({'event':_0xbb98('0x33'),'message':_0x1a8a75});}})['catch'](function(_0x297e49){logger[_0xbb98('0x20')]('Trigger,\x20%s',_0xbb98('0x34'),_0x297e49);});};}function afterCreateOfflineMessage(_0x4c1f69){return function(_0x1b70cf){_0x1b70cf=_0x1b70cf[_0xbb98('0x22')]({'plain':!![]});_0x1b70cf[_0xbb98('0x32')]=_0x4c1f69;_0x1b70cf[_0xbb98('0x23')]=_0x4c1f69;_0x1b70cf['event']=_0xbb98('0x35');return request({'event':_0x1b70cf[_0xbb98('0x24')],'message':_0x1b70cf});};}function afterCreate(_0x175a2f,_0xd32c37){return function(_0x245a9b){var _0x5ae227=_0x245a9b[_0xbb98('0x22')]({'plain':!![]});_0x5ae227[_0xbb98('0x32')]=_0x175a2f;_0x5ae227[_0xbb98('0x23')]=_0x175a2f;_0x5ae227[_0xbb98('0x24')]=_0xbb98('0x36');Promise[_0xbb98('0x26')]()['then'](function(){var _0x3d0718=_0xbb98('0x28')+_0x5ae227[_0xbb98('0x27')];return db['sequelize'][_0xbb98('0x2a')](_0x3d0718,{'type':db[_0xbb98('0x37')][_0xbb98('0x2b')][_0xbb98('0x2c')],'raw':!![]});})['then'](function(_0x56a2b0){if(_0x56a2b0){_0x5ae227[_0xbb98('0x2d')]=_0x56a2b0[0x0];}if(_0x5ae227[_0xbb98('0x2e')]){return getAgent(_0x5ae227[_0xbb98('0x2e')]);}return;})[_0xbb98('0x1e')](function(_0xe6cf1a){if(_0xe6cf1a){_0x5ae227['interface']=util['format']('SIP/%s',_0xe6cf1a[_0xbb98('0x30')]);_0x5ae227[_0xbb98('0x31')]=_0xe6cf1a;}return request({'event':_0xd32c37,'message':_0x5ae227});})[_0xbb98('0x38')](function(_0x3dce3a){logger[_0xbb98('0x20')](_0xbb98('0x21'),'AfterCreate',_0x3dce3a);});};}function afterUpdate(_0x5ddc04){return function(_0x2aac34){var _0x2f2f13=_0x2aac34[_0xbb98('0x39')](_0xbb98('0x3a'))&&_0x2aac34[_0xbb98('0x3a')];var _0x38c440=_0x2aac34[_0xbb98('0x39')](_0xbb98('0x3b'));if(_0x2f2f13||_0x38c440){var _0x3dd42a=_0x2f2f13?_0xbb98('0x9'):_0xbb98('0x3b');var _0x545fb6=_0x2aac34[_0xbb98('0x22')]({'plain':!![]});_0x545fb6[_0xbb98('0x32')]=_0x5ddc04;_0x545fb6[_0xbb98('0x23')]=_0x5ddc04;_0x545fb6[_0xbb98('0x24')]=_0x2f2f13?_0xbb98('0x3a'):_0xbb98('0x3b');var _0x18412d=_0xbb98('0x28')+_0x545fb6[_0xbb98('0x27')];return db[_0xbb98('0x29')][_0xbb98('0x2a')](_0x18412d,{'type':db['Sequelize'][_0xbb98('0x2b')][_0xbb98('0x2c')],'raw':!![]})[_0xbb98('0x1e')](function(_0x15e6ed){if(_0x15e6ed){_0x545fb6[_0xbb98('0x2d')]=_0x15e6ed[0x0];}if(typeof _0x545fb6[_0xbb98('0x2e')]===_0xbb98('0x2f'))return;return getAgent(_0x545fb6[_0xbb98('0x2e')]);})['then'](function(_0x2b63fd){if(_0x2b63fd){_0x545fb6['interface']=util['format'](_0xbb98('0x3c'),_0x2b63fd['name']);_0x545fb6[_0xbb98('0x31')]=_0x2b63fd;}return request({'event':_0x3dd42a,'message':_0x545fb6});})[_0xbb98('0x38')](function(_0x529924){logger[_0xbb98('0x20')](_0xbb98('0x21'),_0xbb98('0x3d'),_0x529924);});}};}function getAgent(_0x4b8dfc){return db[_0xbb98('0x3e')][_0xbb98('0x3f')]({'where':{'id':_0x4b8dfc},'attributes':['id',_0xbb98('0x30'),_0xbb98('0x40'),_0xbb98('0x41'),_0xbb98('0x42')],'raw':!![]})[_0xbb98('0x1e')](function(_0x3f6d60){return _0x3f6d60;});}exports[_0xbb98('0x43')]=function(){for(var _0x3b8954=0x0;_0x3b8954<triggers[_0xbb98('0x44')];_0x3b8954+=0x1){if(db[_0xbb98('0x45')](triggers[_0x3b8954]['model'])){db[triggers[_0x3b8954]['model']][_0xbb98('0x46')](triggers[_0x3b8954][_0xbb98('0x24')],triggers[_0x3b8954]['callback'](triggers[_0x3b8954]['channel'][_0xbb98('0x47')](),triggers[_0x3b8954][_0xbb98('0x48')]));}}};
\ No newline at end of file