From: "Saved by Internet Explorer 11" Subject: Linksys SPA Configuration Date: Thu, 14 Sep 2017 12:03:50 +1000 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0015_01D32D51.873B55D0" X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7601.23651 This is a multi-part message in MIME format. ------=_NextPart_000_0015_01D32D51.873B55D0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://192.100.100.20/admin/advanced =20 Linksys SPA Configuration =20 =20
3D"Cisco-Linksys,

Info

System

SIP

Provisioning

Regional

Phone

Ext=20 1

Ext=20 2

Ext=20 3

Ext=20 4

User

User Login    basic  |  advanced
Personal = Directory    Call=20 History


 
System=20 Information=20
DHCP: Static IP Current IP: 192.100.100.20=20
Host Name: IPPh1 Domain: =20
Current Netmask: 255.255.255.0 Current Gateway: 192.100.100.111=20
Primary DNS:
Secondary DNS: =20
 
Product=20 Information=20
Product Name: SPA-942 Serial Number: 4LO00J810926=20
Software Version: 6.1.5(a) Hardware Version: 2.0.4(5516)=20
MAC Address: 000E08D99A22 Client Certificate: Installed=20
Customization: Open Licenses: None=20
 
Phone = Status=20
Current Time: 9/14/2017 12:03:48 Elapsed Time: 00:02:31=20
Broadcast Pkts Sent: 0 Broadcast Bytes Sent: 0=20
Broadcast Pkts Recv: 145 Broadcast Bytes Recv: 14175=20
Broadcast Pkts Dropped: 0 Broadcast Bytes Dropped: 0=20
RTP Packets Sent: 603 RTP Bytes Sent: 126548=20
RTP Packets Recv: 570 RTP Bytes Recv: 136800=20
SIP Messages Sent: 21 SIP Bytes Sent: 13411=20
SIP Messages Recv: 21 SIP Bytes Recv: 8867=20
External IP: Operational VLAN ID: n/a=20
 
Ext 1 = Status=20
Registration State: Registered Last Registration At: 9/14/2017 12:03:35=20
Next Registration In: 10 s Message Waiting: Yes=20
Mapped SIP Port:
 
Ext 2 = Status=20
Registration State: Not Registered Last Registration At: =20
Next Registration In: Message Waiting: No=20
Mapped SIP Port:
 
Ext 3 = Status=20
Registration State: Not Registered Last Registration At: =20
Next Registration In: Message Waiting: No=20
Mapped SIP Port:
 
Ext 4 = Status=20
Registration State: Not Registered Last Registration At: =20
Next Registration In: Message Waiting: No=20
Mapped SIP Port:
 
Line = 1 Call 1=20 Status=20
Call State: Idle Tone: None=20
Encoder: Decoder: =20
Type: Remote Hold: =20
Callback: Peer Name: =20
Peer Phone: Duration: =20
Packets Sent: Packets Recv: =20
Bytes Sent: Bytes Recv: =20
Decode Latency: Jitter: =20
Round Trip Delay: Packets Lost: =20
Packet Error: Mapped RTP Port: =20
Media Loopback:
 
Line = 1 Call 2=20 Status=20
Call State: Idle Tone: None=20
Encoder: Decoder: =20
Type: Remote Hold: =20
Callback: Peer Name: =20
Peer Phone: Duration: =20
Packets Sent: Packets Recv: =20
Bytes Sent: Bytes Recv: =20
Decode Latency: Jitter: =20
Round Trip Delay: Packets Lost: =20
Packet Error: Mapped RTP Port: =20
Media Loopback:
 
Line = 2 Call 1=20 Status=20
Call State: Idle Tone: None=20
Encoder: Decoder: =20
Type: Remote Hold: =20
Callback: Peer Name: =20
Peer Phone: Duration: =20
Packets Sent: Packets Recv: =20
Bytes Sent: Bytes Recv: =20
Decode Latency: Jitter: =20
Round Trip Delay: Packets Lost: =20
Packet Error: Mapped RTP Port: =20
Media Loopback:
 
Line = 2 Call 2=20 Status=20
Call State: Idle Tone: None=20
Encoder: Decoder: =20
Type: Remote Hold: =20
Callback: Peer Name: =20
Peer Phone: Duration: =20
Packets Sent: Packets Recv: =20
Bytes Sent: Bytes Recv: =20
Decode Latency: Jitter: =20
Round Trip Delay: Packets Lost: =20
Packet Error: Mapped RTP Port: =20
Media Loopback:
 
Line = 3 Call 1=20 Status=20
Call State: Idle Tone: None=20
Encoder: Decoder: =20
Type: Remote Hold: =20
Callback: Peer Name: =20
Peer Phone: Duration: =20
Packets Sent: Packets Recv: =20
Bytes Sent: Bytes Recv: =20
Decode Latency: Jitter: =20
Round Trip Delay: Packets Lost: =20
Packet Error: Mapped RTP Port: =20
Media Loopback:
 
Line = 3 Call 2=20 Status=20
Call State: Idle Tone: None=20
Encoder: Decoder: =20
Type: Remote Hold: =20
Callback: Peer Name: =20
Peer Phone: Duration: =20
Packets Sent: Packets Recv: =20
Bytes Sent: Bytes Recv: =20
Decode Latency: Jitter: =20
Round Trip Delay: Packets Lost: =20
Packet Error: Mapped RTP Port: =20
Media Loopback:
 
Line = 4 Call 1=20 Status=20
Call State: Idle Tone: None=20
Encoder: Decoder: =20
Type: Remote Hold: =20
Callback: Peer Name: =20
Peer Phone: Duration: =20
Packets Sent: Packets Recv: =20
Bytes Sent: Bytes Recv: =20
Decode Latency: Jitter: =20
Round Trip Delay: Packets Lost: =20
Packet Error: Mapped RTP Port: =20
Media Loopback:
 
Line = 4 Call 2=20 Status=20
Call State: Idle Tone: None=20
Encoder: Decoder: =20
Type: Remote Hold: =20
Callback: Peer Name: =20
Peer Phone: Duration: =20
Packets Sent: Packets Recv: =20
Bytes Sent: Bytes Recv: =20
Decode Latency: Jitter: =20
Round Trip Delay: Packets Lost: =20
Packet Error: Mapped RTP Port: =20
Media Loopback:
 
Downloaded Ring=20 Tone=20
Status: Idle=20
Ring Tone 1: Not = Installed=20
Ring Tone 2: Not=20 Installed

 
System=20 Configuration=20
Restricted Access Domains: =20
Enable Web Server: Web Server Port: =20
Enable Web Admin Access: Admin Passwd: =20
User Password:
 
Internet=20 Connection Type =20
Connection Type: =20
 
= Static IP=20 Settings=20
Static IP: NetMask: =20
Gateway:
 
= PPPoE=20 Settings=20
PPPoE Login Name: PPPoE Login Password: =20
PPPoE Service Name: =20
 
Optional Network=20 Configuration=20
HostName: Domain: =20
Primary DNS: Secondary DNS: =20
DNS Server Order: DNS Query Mode: =20
Syslog Server: Debug Server: =20
Debug Level: Primary NTP Server: =20
Secondary NTP Server:
 
VLAN=20 Settings=20
Enable VLAN: Enable CDP: =20
VLAN ID: PC Port VLAN Highest Priority: =20
Enable PC Port VLAN Tagging: PC Port VLAN ID:

 
SIP=20 Parameters=20
Max Forward: Max Redirection: =20
Max Auth: SIP User Agent Name: =20
SIP Server Name: SIP Reg User Agent Name: =20
SIP Accept Language: DTMF Relay MIME Type: =20
Remove Last Reg: Use Compact Header: =20
Escape Display Name: SIP-B Enable: =20
Talk Package: Hold Package: =20
Conference Package: Notify Conference: =20
RFC 2543 Call Hold: Random REG CID On Reboot: =20
Mark All AVT Packets: SIP TCP Port Min: =20
SIP TCP Port Max: CTI Enable: =20
Caller ID Header: SRTP Method: =20
Hold Target Before REFER:
 
SIP = Timer Values=20 (sec)=20
SIP T1: SIP T2: =20
SIP T4: SIP Timer B: =20
SIP Timer F: SIP Timer H: =20
SIP Timer D: SIP Timer J: =20
INVITE Expires: ReINVITE Expires: =20
Reg Min Expires: Reg Max Expires: =20
Reg Retry Intvl: Reg Retry Long Intvl: =20
Reg Retry Random Delay: Reg Retry Long Random Delay: =20
Reg Retry Intvl Cap: Sub Min Expires: =20
Sub Max Expires: Sub Retry Intvl: =20
 
Response Status=20 Code Handling=20
SIT1 RSC: SIT2 RSC: =20
SIT3 RSC: SIT4 RSC: =20
Try Backup RSC: Retry Reg RSC: =20
 
RTP=20 Parameters=20
RTP Port Min: RTP Port Max: =20
RTP Packet Size: Max RTP ICMP Err: =20
RTCP Tx Interval: No UDP Checksum: =20
Symmetric RTP: Stats In BYE: =20
 
SDP = Payload=20 Types=20
AVT Dynamic Payload: INFOREQ Dynamic Payload: =20
G726r16 Dynamic Payload: G726r24 Dynamic Payload: =20
G726r32 Dynamic Payload: G726r40 Dynamic Payload: =20
G729b Dynamic Payload: EncapRTP Dynamic Payload: =20
RTP-Start-Loopback Dynamic Payload: RTP-Start-Loopback Codec: =20
AVT Codec Name: G711u Codec Name: =20
G711a Codec Name: G726r16 Codec Name: =20
G726r24 Codec Name: G726r32 Codec Name: =20
G726r40 Codec Name: G729a Codec Name: =20
G729b Codec Name: G723 Codec Name: =20
EncapRTP Codec Name:
 
NAT = Support=20 Parameters=20
Handle VIA received: Handle VIA rport: =20
Insert VIA received: Insert VIA rport: =20
Substitute VIA Addr: Send Resp To Src Port: =20
STUN Enable: STUN Test Enable: =20
STUN Server: EXT IP: =20
EXT RTP Port Min: NAT Keep Alive Intvl: =20
 
Linksys Key=20 System Parameters=20
Linksys Key System: Multicast Address: =20
Force LAN Codec:

 
Configuration=20 Profile=20
Provision Enable: Resync On Reset: =20
Resync Random Delay: Resync Periodic: =20
Resync Error Retry Delay: Forced Resync Delay: =20
Resync From SIP: Resync After Upgrade Attempt: =20
Resync Trigger 1: =20
Resync Trigger 2: =20
Resync Fails On FNF:
Profile Rule: =20
Profile Rule B: =20
Profile Rule C: =20
Profile Rule D: =20
Log Resync Request Msg: =20
Log Resync Success Msg: =20
Log Resync Failure Msg: =20
Report Rule: =20
User Configurable Resync:
 
Firmware=20 Upgrade=20
Upgrade Enable: Upgrade Error Retry Delay: =20
Downgrade Rev Limit:
Upgrade Rule: =20
Log Upgrade Request Msg: =20
Log Upgrade Success Msg: =20
Log Upgrade Failure Msg: =20
License Keys: =20
 
General Purpose=20 Parameters=20
GPP A: =20
GPP B: =20
GPP C: =20
GPP D: =20
GPP E: =20
GPP F: =20
GPP G: =20
GPP H: =20
GPP I: =20
GPP J: =20
GPP K: =20
GPP L: =20
GPP M: =20
GPP N: =20
GPP O: =20
GPP P:

 
Call = Progress=20 Tones=20
Dial Tone: =20
Outside Dial Tone: =20
Prompt Tone: =20
Busy Tone: =20
Reorder Tone: =20
Off Hook Warning Tone: =20
Ring Back Tone: =20
Call Waiting Tone: =20
Confirm Tone: =20
SIT1 Tone: =20
SIT2 Tone: = =20
SIT3 Tone: = =20
SIT4 Tone: = =20
MWI Dial Tone: =20
Cfwd Dial Tone: =20
Holding Tone: =20
Conference Tone: =20
Secure Call Indication Tone: =
Page Tone: =20
Alert Tone: =20
 
Distinctive Ring=20 Patterns=20
Cadence 1: Cadence 2: =20
Cadence 3: Cadence 4: =20
Cadence 5: Cadence 6: =20
Cadence 7: Cadence 8: =20
Cadence 9:
 
Control Timer=20 Values (sec)=20
Reorder Delay: Call Back Expires: =20
Call Back Retry Intvl: Call Back Delay: =20
Interdigit Long Timer: Interdigit Short Timer: =20
 
Vertical Service=20 Activation Codes=20
Call Return Code: Blind Transfer Code: =20
Call Back Act Code: Call Back Deact Code: =20
Cfwd All Act Code: Cfwd All Deact Code: =20
Cfwd Busy Act Code: Cfwd Busy Deact Code: =20
Cfwd No Ans Act Code: Cfwd No Ans Deact Code: =20
CW Act Code: CW Deact Code: =20
CW Per Call Act Code: CW Per Call Deact Code: =20
Block CID Act Code: Block CID Deact Code: =20
Block CID Per Call Act Code: Block CID Per Call Deact Code: =20
Block ANC Act Code: Block ANC Deact Code: =20
DND Act Code: DND Deact Code: =20
Secure All Call Act Code: Secure No Call Act Code: =20
Secure One Call Act Code: Secure One Call Deact Code: =20
Paging Code: Call Park Code: =20
Call Pickup Code: Call UnPark Code: =20
Group Call Pickup Code: Media Loopback Code: =20
Referral Services Codes: =20
Feature Dial Services Codes: =20
 
Vertical Service=20 Announcement Codes=20
Service Annc Base Number:
Service Annc Extension Codes: =20
 
Outbound Call=20 Codec Selection Codes=20
Prefer G711u Code: Force G711u Code: =20
Prefer G711a Code: Force G711a Code: =20
Prefer G723 Code: Force G723 Code: =20
Prefer G726r16 Code: Force G726r16 Code: =20
Prefer G726r24 Code: Force G726r24 Code: =20
Prefer G726r32 Code: Force G726r32 Code: =20
Prefer G726r40 Code: Force G726r40 Code: =20
Prefer G729a Code: Force G729a Code: =20
 
Miscellaneous=20
Set Local Date (mm/dd): Set Local Time (HH/mm): =20
Time Zone: Time Offset (HH/mm): =20
Daylight Saving Time Rule: =20
Daylight Saving Time Enable: DTMF Playback Level: =20
DTMF Playback Length: Inband DTMF Boost: =20
Dictionary Server Script: =20
Language Selection: Default Character Encoding:

 
General=20
Station Name: Voice Mail Number: =20
Text Logo:
BMP Picture Download URL: =20
Select Logo: Select Background Picture: =20
Screen Saver Enable: Screen Saver Wait: =20
Screen Saver Icon:
 
Line = Key 1=20
Extension: Short Name: =20
Share Call Appearance:
Extended Function: =20
 
Line = Key 2=20
Extension: Short Name: =20
Share Call Appearance:
Extended Function: =20
 
Line = Key 3=20
Extension: Short Name: =20
Share Call Appearance:
Extended Function: =20
 
Line = Key 4=20
Extension: Short Name: =20
Share Call Appearance:
Extended Function: =20
 
Line = Key Extended=20 Function=20
Subscribe Expires: Subscribe Retry Interval: =20
Subscribe Delay: Server Type: =20
SPA932 Call Pickup Code:
 
Miscellaneous=20 Line Key Settings=20
SCA Line ID Mapping: SCA Barge-In Enable: =20
 
Line = Key LED=20 Pattern=20
Idle LED: Remote Undefined LED: =20
Local Seized LED: Remote Seized LED: =20
Local Progressing LED: Remote Progressing LED: =20
Local Ringing LED: Remote Ringing LED: =20
Local Active LED: Remote Active LED: =20
Local Held LED: Remote Held LED: =20
Register Failed LED: Disabled LED: =20
Registering LED: Call Back Active LED: =20
 
Supplementary=20 Services=20
Conference Serv: Attn Transfer Serv: =20
Blind Transfer Serv: DND Serv: =20
Block ANC Serv: Call Back Serv: =20
Block CID Serv: Secure Call Serv: =20
Cfwd All Serv: Cfwd Busy Serv: =20
Cfwd No Ans Serv: Paging Serv: =20
Call Park Serv: Call Pick Up Serv: =20
ACD Login Serv: Group Call Pick Up Serv: =20
ACD Ext: Service Annc Serv: =20
 
Ring = Tone=20
Ring1: =20
Ring2: =20
Ring3: =20
Ring4: =20
Ring5: =20
Ring6: =20
Ring7: =20
Ring8: =20
Ring9: =20
Ring10: =20
 
Audio = Input Gain=20 (dB)=20
Handset Input Gain: Headset Input Gain: =20
Speakerphone Input Gain: Handset Additional Input Gain: =20
Headset Additional Input Gain: Speakerphone Additional Input Gain: =20
 
LDAP = Corporate=20 Directory Search=20
LDAP Dir Enable: LDAP Corp Dir Name: =20
LDAP Server: LDAP Auth Method: =20
LDAP Client DN: =20
LDAP Username: LDAP Password: =20
LDAP Search Base: =20
LDAP Last Name Filter: LDAP First Name Filter: =20
LDAP Search Item 3: LDAP Item 3 Filter: =20
LDAP Search Item 4: LDAP item 4 Filter: =20
LDAP Display Attrs: =20
LDAP Number Mapping: =20
 
Extension=20 Mobility=20
EM Enable: EM User Domain:

 
General=20
Line Enable:
 
Share = Line=20 Appearance=20
Share Ext: Shared User ID: =20
Subscription Expires:
 
NAT=20 Settings=20
NAT Mapping Enable: NAT Keep Alive Enable: =20
NAT Keep Alive Msg: NAT Keep Alive Dest: =20
 
Network=20 Settings=20
SIP TOS/DiffServ Value: SIP CoS Value: =20
RTP TOS/DiffServ Value: RTP CoS Value: =20
Network Jitter Level: Jitter Buffer Adjustment: =20
 
SIP=20 Settings=20
SIP Transport: SIP Port: =20
SIP 100REL Enable: EXT SIP Port: =20
Auth Resync-Reboot: SIP Proxy-Require: =20
SIP Remote-Party-ID: Referor Bye Delay: =20
Refer-To Target Contact: Referee Bye Delay: =20
SIP Debug Option: Refer Target Bye Delay: =20
Sticky 183: Auth INVITE: =20
Ntfy Refer On 1xx-To-Inv: Use Anonymous With RPID: =20
Set G729 annexb:
 
Call = Feature=20 Settings=20
Blind Attn-Xfer Enable: MOH Server: =20
Message Waiting: Auth Page: =20
Default Ring: Auth Page Realm: =20
Conference Bridge URL: Auth Page Password: =20
Mailbox ID: Voice Mail Server: =20
State Agent: CFWD Notify Serv: =20
CFWD Notifier:
 
Proxy = and=20 Registration=20
Proxy: Use Outbound Proxy: =20
Outbound Proxy: Use OB Proxy In Dialog: =20
Register: Make Call Without Reg: =20
Register Expires: Ans Call Without Reg: =20
Use DNS SRV: DNS SRV Auto Prefix: =20
Proxy Fallback Intvl: Proxy Redundancy Method: =20
 
Subscriber=20 Information=20
Display Name: User ID: =20
Password: Use Auth ID: =20
Auth ID:
Mini Certificate: =20
SRTP Private Key: =20
 
Audio = Configuration=20
Preferred Codec: Use Pref Codec Only: =20
Second Preferred Codec: Third Preferred Codec: =20
G729a Enable: G723 Enable: =20
G726-16 Enable: G726-24 Enable: =20
G726-32 Enable: G726-40 Enable: =20
Release Unused Codec: DTMF Process AVT: =20
Silence Supp Enable: DTMF Tx Method: =20
 
Dial = Plan=20
Dial Plan: |<8:vm>|<9:aa>|<*97:vmm>|0,95130419|0,000S0|0,10= 1S0|0,106S0|0,1[38]xxxxxxxxS0|0,13[1-9]xxxS0|0,1[9]xxxxxxxxS0|0,0[23478]x= xxxxxxxS0|0,[2-9]xxxxxxxS00,[3469]11S0|0,[2-9]xxxxxx|0,[2-9]xxxxxxxxxS0|0= ,1[2-9]xxxxxxxxxS0|xxx.|[23456789]|0,0011xxx.)">=20
Caller ID Map: =20
Enable IP Dialing: Emergency Number:

 
General=20
Line Enable:
 
Share = Line=20 Appearance=20
Share Ext: Shared User ID: =20
Subscription Expires:
 
NAT=20 Settings=20
NAT Mapping Enable: NAT Keep Alive Enable: =20
NAT Keep Alive Msg: NAT Keep Alive Dest: =20
 
Network=20 Settings=20
SIP TOS/DiffServ Value: SIP CoS Value: =20
RTP TOS/DiffServ Value: RTP CoS Value: =20
Network Jitter Level: Jitter Buffer Adjustment: =20
 
SIP=20 Settings=20
SIP Transport: SIP Port: =20
SIP 100REL Enable: EXT SIP Port: =20
Auth Resync-Reboot: SIP Proxy-Require: =20
SIP Remote-Party-ID: Referor Bye Delay: =20
Refer-To Target Contact: Referee Bye Delay: =20
SIP Debug Option: Refer Target Bye Delay: =20
Sticky 183: Auth INVITE: =20
Ntfy Refer On 1xx-To-Inv: Use Anonymous With RPID: =20
Set G729 annexb:
 
Call = Feature=20 Settings=20
Blind Attn-Xfer Enable: MOH Server: =20
Message Waiting: Auth Page: =20
Default Ring: Auth Page Realm: =20
Conference Bridge URL: Auth Page Password: =20
Mailbox ID: Voice Mail Server: =20
State Agent: CFWD Notify Serv: =20
CFWD Notifier:
 
Proxy = and=20 Registration=20
Proxy: Use Outbound Proxy: =20
Outbound Proxy: Use OB Proxy In Dialog: =20
Register: Make Call Without Reg: =20
Register Expires: Ans Call Without Reg: =20
Use DNS SRV: DNS SRV Auto Prefix: =20
Proxy Fallback Intvl: Proxy Redundancy Method: =20
 
Subscriber=20 Information=20
Display Name: User ID: =20
Password: Use Auth ID: =20
Auth ID:
Mini Certificate: =20
SRTP Private Key: =20
 
Audio = Configuration=20
Preferred Codec: Use Pref Codec Only: =20
Second Preferred Codec: Third Preferred Codec: =20
G729a Enable: G723 Enable: =20
G726-16 Enable: G726-24 Enable: =20
G726-32 Enable: G726-40 Enable: =20
Release Unused Codec: DTMF Process AVT: =20
Silence Supp Enable: DTMF Tx Method: =20
 
Dial = Plan=20
Dial Plan: |<8:vm>|<9:aa>|<*97:vmm>|0,95130419|0,000S0|0,10= 1S0|0,106S0|0,1[38]xxxxxxxxS0|0,13[1-9]xxxS0|0,1[9]xxxxxxxxS0|0,0[23478]x= xxxxxxxS0|0,[2-9]xxxxxxxS00,[3469]11S0|0,[2-9]xxxxxx|0,[2-9]xxxxxxxxxS0|0= ,1[2-9]xxxxxxxxxS0|xxx.|[23456789]|0,0011xxx.)">=20
Caller ID Map: =20
Enable IP Dialing: Emergency Number:

 
General=20
Line Enable:
 
Share = Line=20 Appearance=20
Share Ext: Shared User ID: =20
Subscription Expires:
 
NAT=20 Settings=20
NAT Mapping Enable: NAT Keep Alive Enable: =20
NAT Keep Alive Msg: NAT Keep Alive Dest: =20
 
Network=20 Settings=20
SIP TOS/DiffServ Value: SIP CoS Value: =20
RTP TOS/DiffServ Value: RTP CoS Value: =20
Network Jitter Level: Jitter Buffer Adjustment: =20
 
SIP=20 Settings=20
SIP Transport: SIP Port: =20
SIP 100REL Enable: EXT SIP Port: =20
Auth Resync-Reboot: SIP Proxy-Require: =20
SIP Remote-Party-ID: Referor Bye Delay: =20
Refer-To Target Contact: Referee Bye Delay: =20
SIP Debug Option: Refer Target Bye Delay: =20
Sticky 183: Auth INVITE: =20
Ntfy Refer On 1xx-To-Inv: Use Anonymous With RPID: =20
Set G729 annexb:
 
Call = Feature=20 Settings=20
Blind Attn-Xfer Enable: MOH Server: =20
Message Waiting: Auth Page: =20
Default Ring: Auth Page Realm: =20
Conference Bridge URL: Auth Page Password: =20
Mailbox ID: Voice Mail Server: =20
State Agent: CFWD Notify Serv: =20
CFWD Notifier:
 
Proxy = and=20 Registration=20
Proxy: Use Outbound Proxy: =20
Outbound Proxy: Use OB Proxy In Dialog: =20
Register: Make Call Without Reg: =20
Register Expires: Ans Call Without Reg: =20
Use DNS SRV: DNS SRV Auto Prefix: =20
Proxy Fallback Intvl: Proxy Redundancy Method: =20
 
Subscriber=20 Information=20
Display Name: User ID: =20
Password: Use Auth ID: =20
Auth ID:
Mini Certificate: =20
SRTP Private Key: =20
 
Audio = Configuration=20
Preferred Codec: Use Pref Codec Only: =20
Second Preferred Codec: Third Preferred Codec: =20
G729a Enable: G723 Enable: =20
G726-16 Enable: G726-24 Enable: =20
G726-32 Enable: G726-40 Enable: =20
Release Unused Codec: DTMF Process AVT: =20
Silence Supp Enable: DTMF Tx Method: =20
 
Dial = Plan=20
Dial Plan: |<8:vm>|<9:aa>|<*97:vmm>|0,95130419|0,000S0|0,10= 1S0|0,106S0|0,1[38]xxxxxxxxS0|0,13[1-9]xxxS0|0,1[9]xxxxxxxxS0|0,0[23478]x= xxxxxxxS0|0,[2-9]xxxxxxxS00,[3469]11S0|0,[2-9]xxxxxx|0,[2-9]xxxxxxxxxS0|0= ,1[2-9]xxxxxxxxxS0|xxx.|[23456789]|0,0011xxx.)">=20
Caller ID Map: =20
Enable IP Dialing: Emergency Number:

 
General=20
Line Enable:
 
Share = Line=20 Appearance=20
Share Ext: Shared User ID: =20
Subscription Expires:
 
NAT=20 Settings=20
NAT Mapping Enable: NAT Keep Alive Enable: =20
NAT Keep Alive Msg: NAT Keep Alive Dest: =20
 
Network=20 Settings=20
SIP TOS/DiffServ Value: SIP CoS Value: =20
RTP TOS/DiffServ Value: RTP CoS Value: =20
Network Jitter Level: Jitter Buffer Adjustment: =20
 
SIP=20 Settings=20
SIP Transport: SIP Port: =20
SIP 100REL Enable: EXT SIP Port: =20
Auth Resync-Reboot: SIP Proxy-Require: =20
SIP Remote-Party-ID: Referor Bye Delay: =20
Refer-To Target Contact: Referee Bye Delay: =20
SIP Debug Option: Refer Target Bye Delay: =20
Sticky 183: Auth INVITE: =20
Ntfy Refer On 1xx-To-Inv: Use Anonymous With RPID: =20
Set G729 annexb:
 
Call = Feature=20 Settings=20
Blind Attn-Xfer Enable: MOH Server: =20
Message Waiting: Auth Page: =20
Default Ring: Auth Page Realm: =20
Conference Bridge URL: Auth Page Password: =20
Mailbox ID: Voice Mail Server: =20
State Agent: CFWD Notify Serv: =20
CFWD Notifier:
 
Proxy = and=20 Registration=20
Proxy: Use Outbound Proxy: =20
Outbound Proxy: Use OB Proxy In Dialog: =20
Register: Make Call Without Reg: =20
Register Expires: Ans Call Without Reg: =20
Use DNS SRV: DNS SRV Auto Prefix: =20
Proxy Fallback Intvl: Proxy Redundancy Method: =20
 
Subscriber=20 Information=20
Display Name: User ID: =20
Password: Use Auth ID: =20
Auth ID:
Mini Certificate: =20
SRTP Private Key: =20
 
Audio = Configuration=20
Preferred Codec: Use Pref Codec Only: =20
Second Preferred Codec: Third Preferred Codec: =20
G729a Enable: G723 Enable: =20
G726-16 Enable: G726-24 Enable: =20
G726-32 Enable: G726-40 Enable: =20
Release Unused Codec: DTMF Process AVT: =20
Silence Supp Enable: DTMF Tx Method: =20
 
Dial = Plan=20
Dial Plan: |<8:vm>|<9:aa>|<*97:vmm>|0,95130419|0,000S0|0,10= 1S0|0,106S0|0,1[38]xxxxxxxxS0|0,13[1-9]xxxS0|0,1[9]xxxxxxxxS0|0,0[23478]x= xxxxxxxS0|0,[2-9]xxxxxxxS00,[3469]11S0|0,[2-9]xxxxxx|0,[2-9]xxxxxxxxxS0|0= ,1[2-9]xxxxxxxxxS0|xxx.|[23456789]|0,0011xxx.)">=20
Caller ID Map: =20
Enable IP Dialing: Emergency Number:

 
Call=20 Forward=20
Cfwd All Dest: Cfwd Busy Dest: =20
Cfwd No Ans Dest: Cfwd No Ans Delay: =20
 
Speed = Dial=20
Speed Dial 2: Speed Dial 3: =20
Speed Dial 4: Speed Dial 5: =20
Speed Dial 6: Speed Dial 7: =20
Speed Dial 8: Speed Dial 9: =20
 
Supplementary=20 Services=20
CW Setting: Block CID Setting: =20
Block ANC Setting: DND Setting: =20
Secure Call Setting: Dial Assistance: =20
Auto Answer Page: Preferred Audio Device: =20
Send Audio To Speaker: Time Format: =20
Date Format: Miss Call Shortcut: =20
Accept Media Loopback Request: Media Loopback Mode: =20
Media Loopback Type: Text Message: =20
Text Message From 3rd Party: Alert Tone Off: =20
Log Missed Calls for EXT 1: Log Missed Calls for EXT 2: =20
Log Missed Calls for EXT 3: Log Missed Calls for EXT 4: =20
 
Audio = Volume=20
Ringer Volume: Speaker Volume: =20
Handset Volume: Headset Volume: =20
LCD Contrast: Back Light Timer:
 
 =20
User Login    basic  |  advanced=20



Copyright =A9 1992-2006 Cisco Systems, = Inc. All=20 Rights Reserved.

------=_NextPart_000_0015_01D32D51.873B55D0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://192.100.100.20/spabanner.jpg /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAEwAA/+4ADkFkb2JlAGTAAAAAAf/b AIQAEw8PFhAWJBUVJC0iHCItKSMiIiMpOC8vLy8vOEE7Ozs7OztBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQQEUFhYdGR0jGBgjMSMdIzE/MSYmMT9BPzsvOz9BQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFB/8AAEQgAXwL4AwEiAAIRAQMRAf/EAJUAAQACAwEBAAAAAAAAAAAA AAEAAgQFBgMHAQEBAQEBAQAAAAAAAAAAAAAAAQIFAwQQAAEDAgMEBAgLBwQDAAAAAAEAAgMRBCES BTFBURNhcSIGgZGhseEyUhTB0UJicpKyIzMVNfCCU3M0VBbxosIk4vKDEQEBAAEEAgMAAwAAAAAA AAAAAREhQQISMVFhgaGx0SL/2gAMAwEAAhEDEQA/AOtUUUWgKKKIBCUKiIShAKKKIBCUIBRRRUCE oQCEoQCEoVAhKEAhKFUCEoQCEoQCEoVAhKEAqqyqqBCUIBCUKgQlCCqEoVAhKEAqqyqgEJQqBCUI KoShVAhKEAhKFRVCUIBCUKgQlCAVUoVAhKEAhKFQIShAIShAIShUCEoQCEoQCEoVQKKKIBCUKgQl CCIShAKKKIBCUKiIShBFFFEH1pRRRc1t8270E/mcv7n2GrpO5v8ARP8A5jvstXNd6f1OX9z7DV0n cz+hf/Md9lqm46RCULQiEr5nc6vfNme0TSABzgO0eKmR9KUXIa9eXEVjaPZI9rntq4tcQT2W7Vpr DX7u0mEj3ukZscx7iajw70yPo6F42l3FeRNmhNWu8nQV7KgUXFd5NQure9LIpXMblaaNdQL19+uf yXn8x3M5lM9caVTI69C4TRNSu5r6KOSV7mkmoLjTYV2F9qNvp7M87qcGj1j1BJRlIXCaj3lubs5Y SYo/mntHrPxLFtZ9SvH8uCSVzvpuw68U7D6Ihc97rPpdq+6uZnyStHZbndkBOA68VzDtUvZHV50l TwcR5AmcD6OhfPubqnGf/eqvuNSYMz3TADeS8J2H0JC4Sw1q5ilDZZHPjd2XBztx3g7QV6aqL7Tp shmkMZxY7OcR8avYdshc73f1kzf9a4dV/wAhx+V0da6Fzg0FzjQDElWXKIhcXquuS3Mv/Xe5kbcG 5SRm6Ss3TBdMgffTve5rWuMbHONHdJ6FOyumQuAfqd5I6plfU7g4jyBenN1LjN/vTsO6QuFdPqDB mc6YAbyXK9nrNzbyAve57K9prjXBO4625uTGcraVwzE1wzGgwG0kqsNy57srqEEkBwBGI2gg7FW7 hMmIGZjsmYDb2TWo8x8iLeFwIAbljaS5tduPxVOJxK1ujLQlC0BCUKgQlCCqEoVAhKEAqqyqgEJQ qBCUIKoShVAhKEAhKFRVCUIBCUKgQlCAVVZVVAhKEAhKFQIShAIShAIShUCEoQCEoQCEoVQKKKIB CUKgQlCCIShAKKKIBCUKiIShBFFFEH1pRRRc1t8170/qcv7n2GrpO5n9C/8AmO+y1c33p/U5f3Ps NXSdzP6F/wDMd9lqm46RCULQi+S3X48n03edfWl8luvx5Ppu86zR0XeL9Psvof8AFqw+7VpFezyQ zCrXRHwdpuI6Vmd4v0+y+h/xavLud/Wv/ln7TU3DDJP3Yu+XJV1u/wAo4j5w3/6LtYZmTsEsZzMc KgheGoafFqMJhlGG1p3tPELk7G8n7vXJtLqphcdu76Q+EK+Bjd6/1A/RavYfoH/0+FY/ehwffZmm rSxhBG9ZA/QP/p8Kg0VtcPtZBNEaPbsPkVZZnzvMkri5x2kmq9bG0N7OyBpDS80qV3Ft3dsreIxu bzC4Uc923wcPAkmRxGnst5J2tunFsZOJH7bOlfRrW1htYwyBoa3o3/GuA1bSpNMlynGM+o/j6Vte 7+vcmlrcnsbGPPyeg9Hm6lZoN73gYX6fKG4kAHwBwJXCWNz7ncMnpmyGtF9GvrmK1gdLMKsGDgBX bguO920u+nEdu6SMvNAC0FtfHVKNh/l8f8E/W9CrJ3rilaWPhJa4EEZtx8Ct/iEf8Y/V9KHd0G0O WY13Vb6Vf9DFs5dHuXiN8JjJNAS8keOq6W/sY76EwyfungeK+dOBY4jeCvprDmaDxCcdR84ubeWx mMb8HtNQR5CFn32uzXlu2AjL/EI+V+29b/vJaxy2pmI7cdMp6zSi4yJgke1h2EgeNS6aDaaJpRvp OZJ+Cw4/OPD411WpNpZytaMAx1AOpZMEDLaMRRijWigVbmZlvE6WT1WipW5MRHz22m93mZLSuQh1 OpdF/lTP4R+t6Fgvj0u7mDYTJGXkClBlqVsf8Wh/iO8QWZnZXm7vRG4EGIkHA9r0LEtptJmcGvhM dd5cSPOs1/daOnZkNekLmZGGN5YcS0kYdCW2eR9EAAFBsQqwGsTSduUeZXXqiqEoQCEoVAhKEFUJ QqBCUIBVVlVAIShUCEoQVQlCqBCUIBCUKiqEoQCEoVAhKEFUJQqBCUIBCUKgQlCAQlCAQlCoEJQg EJQqBCUIgUUUQCEoVAhKEEQlCAUUUQCEoVEQlCCKKKIPrSiii5rble8I93n5vujZ2vArJ2q1GFDT o2LX2uvT2YLbezDAcTQPXcqIOO/yu+/tvI5H+V339t5HLsUIOb0zvBdXtyyCSDI11au7WFAStPPf tEjh7gw0cccpxx6l3iEwOY1W5aLK2kdbNkqMIzXsYbqI7uTMnmeW2zYC1vrNrjU7MV06iAWLeWUN 42krGvIrlzcVlIVHC3Mxt5DFJYMJbhhmI8HQs4XYOmOcbVoaJcvJ7VNla8V1aEwON0m7ZJdxtFo2 MkntjNhguxShWDyngjuG5JWh7dtHCq5C+e+ymMRsonAeq5rCQQuzQmBy1pq8l202s9uAC2kYLXZM w2B1d2zqWufePhdR1jG1w+Y5dyhTA4j84l/tm+J/xqfm8v8AbN8T/jXbITA4qC5dcSCNllFUn2Cu zAoKJQtSYGBq78lo92QSUy9g7DiOC5eG7BkaPdGDtDHK5dshLMgXlOzmRuZQOqDg7YeteqFUcbJc vhdlfZxgj5hU/NZf7dvicuxQp1+Vcf8Amsv9u3xOVY7l0zwxtpGXE+wV2KE6/KKNFABsoNyUoWxV CUIBCUKgQlCCqEoVAhKEAqqyqgEJQqBCUIKoShVAhKEAhbFlrGLB1w8dvNlZj1elYMVA8Fzcw3tB pVJcjyQvaQB7iY2lrfZ208KIYjJK2Mj1nAeMqjxQs/VLeOC5dFADRoFd/SsENc7YCUlzMiqFbKcc DhtVQ0nYKqiqFcMccQCVUUBx2KiqFvtNistQlMXILQGlxdzSfgC181xZua5sUBB+S7mE+GlFmctc YGAhXMbxuPiWy0+ziltbi4mFeWOxj8qh9CtuNRqUK4Y44gEjqVcprShrwWhVCuY3jEg+JbOzsIpN PmupGkuacrKV24bvCpbINQhWLSDQjFQxvGJB8S0KIVwxzsQCVUtINCKFBVC9DE8fJPiXmgELa6Zp zJmuu7o5bWM0cduY4dnDHftWRaQ2OpiSKKIwyhuaMmQvrTryjxnes3lJ9eRoVFcxPqRQ4GmGKqWO rloa8FtFUK7o3NFSCB1Lbs02K30732dpe+Q5I2Ytyntdo8dmzDyqXlIrSIWVdOjleBBEYgBi0uLy Tx2BeBieMS0+JWVFEKxY4UwOOxTlurShrwoqKKK3LdWlDXhRQxubtBHgQUQtxcaSLCO3uJay84Zj EBlwoDTNjx4LWzZZZHGFhY3cypdTwqTlL4HihXcxzfWBHWpyn+yfEtCiiiiD60oooua21es3M0Mb I7Y5ZpXtYw0BpvJx6AvXSbs3lpHK/wBemV+7tNwPlWBfNuLvUmMgcG+7xl+Z7cwzPwptG5W0ISwS XNrNi5knMBAoCJMcEFDLd3WoT20c5iZG1jmgMa71h0hVg1OSaCMzvMUouBA/I2udw3fNB47l5i8i stWuXzkta5kYb2Sa0HQFiCGUQQyvaWma+bNl3gO8yDfO1a3bC6ck5WP5ThlxzVpSi8jqMVuZ3yyO cGPa3Jl9UuGDW+1VayWB35kbQA8uSVl0Tu7INR4XAKXDY8137w1xjM0VXM2s7I7fgQbC41WOS3mI c+B8WXPmZ2212Gmw1XtdarDavMZD3ua3O/I3NlbxctFcTyT2d3G15nia2PJLko41OLa/Kosuadll dXZnJaJo4+Vge1RpFB013INlLqsEZa0ZnukbzIwxubMOhetneR3sQmirlNRiKEEcVpdMgkgntWSA gi3fXoq4GizdABFs6op95L9pUek2sW8L3NOYtYQ2SQNqxhPErFlv5X6ky2YXtjDczqMrmOam32ek LCmmbBBd2bwedJJIY2UPbz+qR+2CzYI3M1RoO61a0npzoMjVLiVhiggOV8z8uelcrRiaBY7nXVoJ mzSOMIZmZPlbmad4oNviVtY+6kt7oglkTznpuDhSqxb2/dfQ3LYRmt2xYPympeeHQB0IM6XVYYOy c8hawSPLG7G8SrTapDHlDQ6QvbzAI25jk9rqWpupIon5874JxEzK6lWy4bKUxpsXpFde7XLbm7HL EluweqaZgalvR1JkbF+qwBkb2ZpDKKsaxtXEDb4l7211HdxiWI1BwxwIPArUe8timt7uVnJidG9t KYNJIIrQYVWRobHCKSQghskskjK+yVcjHE9zeTzxxS8t0Jyxx0b2uk14rYw3XabbzYTlmdwHq8DQ 9a1F9NazOlZeM5c7CRE5odmcPkkEKl86eC1t7p4JlDHRP41kbhXwqZG0/NoXNY6MPeX5i1rW1NGm hPUsefVxmgMIc6OUnNRleOHWDtC8LiKG05Mb3uhcyOjZm7K4VaRj1rzNy8stLi4GWj35nBu6hANN 1VcjZTapDC9zSHEMID3htWtJ4lE+qQwvdHRznMAc4MbXA7+pamQRsdcRTukzPkc5sTMM4dSlMFks YW3dwKGnJYB9VMjMi1WCZ7GNzUk9R5aQ09FUDVIXPDQHZS7liTL2S7hVYFu08uxwOBdX6pXnHMIp Gi2c4OdLR9s8Vp2sSOHFMjoFq49Q5Trh85+7ie1ow2ArOhuWTl4ZWrHZHVG9aK5aeXeYHGWPztVt RtYtRile6PtNc1uftty1bxHQqwalDO9rAHNLwSwubQOpwWFfROlvXtaKl1s9o6ySvS1v4nNija0u c1nbw/Dyt/YJkbVCpDK2dgkbWjsRVWWwIShAIShUCEoQVQlCoEJQgFVWVUAhKFQIShBVCUKoEJQg 21991YQRe12/28apoLRz3SHYxhKvdXljdBgeJRkGUZcq84r22tmTMhD6yNytLqdPDrXnr1xjWqyo Lp1nYGcDtyvdTw/6L2lizX9uHYvDMzz1bPKtXNfRPhghAdSMgv2eTHr4LIGsQi7fclrqFmRgoPLi p1vnHse2qSe5VkgxdMXZpeAw7I3bii3Lxbwixc0OOMoLgC52HHwrXRXzHWz7e4Bd8qMjaD4dg6hv K92X9lG5tw1jmzNb6rQ0R5qHpqr1uMDItZjdC6jc3lucMxArmJ6j+2Kx7cfllo6c4Sy9gMdgQMce KmjzSSXjrggZSHGV25oOPwLF1K/NzdcyjXNYcrRuc0Hf1q4167bjbmWSPlnTy0wtZmMeYZicScMS uZmdne5wblqfV4LcDUrO2e6e1Y8SluUNcG8sbK4A13LSE1NStcJgbrRfure5uN7WZR14+hY2hWrL q7DZBma0FxCrHfxxWD7UA8x7qk7qYfFwVdKv22MjjICWPaWnL63gxCWXHL3Ub22mmM0hu5mGAh9G B7d+7DHYte0cvSDlFDPLQeP/AMVhyXFjFE5tsx7nvwzThpyjH1cu9Wn1Rhgt4ogawnM7OMC4dR2b eCnW7e1bm8jmtXxwWcjIomgZgXtBqTiccUQ8l+qyTMoWsjzOcDWrj6Frri/064nNzI2Vz8OyQzJg KbK1p4VkaNNHFBc3krAGEtaWsGHUAetZxZPn+xew1CXURcyT/gtjry9w+HcV4NnlsdKh5Byyyv29 GPoWJLqNtBBJDZNeOce3zQMB83KfOmfVYJDatAdy7embAVJFNmPQtdfjT19Dcy20Mmpl8gryohI4 n2gcPIFhaVfT3zLl107PEyMkt66nd1LHbrkRubh8gdyp25OyBnFBTjTjx3LGfqNtbWz7eyD/AL38 QzU2dGX4VJxuMWevobGG6fpulRcr8WZzgDwrXHzLIns4rnV2se3NlizyV3nYPgWon1WCQ2jQHcu3 pnwFSRTZj0L0j12MX0tw4O5UrcmAGcADdjTzq9brZ51G0tZ5jNIb2eM25a+jBI3fuwx2Li3GpJGC 2stxp8MLm2rHvkfhmnDTlFDi3LvWpXpwmMo6C5/6+iRM3yvLj1Y+haBkT5AXMaXBuLiBWnWttb6j bS2vut+HuDD926MDMBwq4+YKs+qRQxNt7Brmx+tI6Smd5qcHZTQtxTjmZmNxsdUnm0nkWdmeWS0O fTe52FcepbB0DH64ygq5kWd54n1fhC1M+qabdXDLucT81mTBoZkq3Hea0r0ryttfa2a4uZ2nmysy MyDsjDfU9XHevPrceNca/atjLfnUdPu7iYfdghkbdwI3+UFZM08z32FqXVMgEk3Tlo74CucGpQjT RYgOzl+eQ0FKV3Y7dm5bA94bZ2otuy1/KZHy2toM1frdPFLwu094GXK8MN9qI/EjdyYn+yQA34V5 u1Oa40OSSY1eXcsO9qpHp8S1tvq1tJayWt4JMr5OZWECuJriXH4FsNdnih0+2bbtyse4SNa4bgN9 ONcU66yWb/wPW8h/7un2X8NoeR1f+i9be55VzqF+ceVRjR0tGzxgLGj7yaeJvepI5DOWtbXK2jab cvarjVaj83jGnzW1Hc6aTmOdhlpUHjXdwScbdLPj9zRtLG8e+KbU7o5Mx5ccze05uPqhuynTtXrq Mwl0yOdsjpXumbyZJGhpDq8Bh8k7VqLbU7R9gLG8EgDH52mENx27cx6TsHBe15rNkbaGG1bJmt3N fHzQ3KaH5VD5qK9bnxv+I6Z1w46jynOrFBDzHfTOFfq1XOxSusdKdqEfZuJ5C0SbTSuzH6JVp+8N oTcyRNk5lxG1naDaAgEe1s2ccVhx6nZXFlHaXolHKJLeSG+XMdu3cFOPCzb1lWfe577TbQ3BzzzS 5Q4+y4nh+6t0b6SfVPcG4RRsLpKb6gUHgqNi5h+uQG5t6Nd7ra+oKDmHsjbjTaOhNvr0MVzd3Lmv zTAtioBhwzY9Wyqt4Wzx7x91GhnLDK8xijC45R0VwUXmovpR9aUUUXNbCiiiAQlCoiEoQCiiiAQl CAQlRUCEoQBQUoQBQlCoFi3Nk26cwyOdlYQ7IKZSRsrhXyrKQgChKFUCEoQCEoQeUcLYy5wqS85n Eq6UKgQlCAVVZVVAhKEAhKFQIShBVCUKgQlCAVVZVQCEoVAhKEFUJQqgQlCAQlCoqhKEAhKFRlSa hK+LkijW4VyChNOPFYaUJJgVQrKqoEJQgEJQqBZAvpW25tRTluOY4Y1WOhTGQIShUCEoVAhKEAhK EAhKFUCiiiAQlCozbXU5LVnLYyMitavjDj4yvG8vZb1+eU7BRrRg0DoG5Y6FMTOdxEJQqBRRRAIS hURCUIIooog//9kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ------=_NextPart_000_0015_01D32D51.873B55D0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://ie.kis.v2.scr.kaspersky-labs.com/C40AC964-6429-7C45-9169-A939E0676DB8/main.js (function(){=0A= var KasperskyLab =3D (function (context) { function GetClass(obj) { if (typeof obj =3D=3D=3D "undefined") return "undefined"; if (obj =3D=3D=3D null) return "null"; return Object.prototype.toString.call(obj) .match(/^\[object\s(.*)\]$/)[1]; } var exports =3D {}, undef; function ObjectToJson(object) { if (object =3D=3D=3D null || object =3D=3D Infinity || object = =3D=3D -Infinity || object =3D=3D=3D undef) return "null"; var className =3D GetClass(object); if (className =3D=3D "Boolean") { return "" + object; } else if (className =3D=3D "Number") { return window.isNaN(object) ? "null" : "" + object; } else if (className =3D=3D "String") { var escapedStr =3D "" + object; return "\"" + escapedStr.replace(/\\/g, = "\\\\").replace(/\"/g, "\\\"") + "\""; } if (typeof object =3D=3D "object") { if (!ObjectToJson.check) ObjectToJson.check =3D []; for (var i=3D0, chkLen=3DObjectToJson.check.length ; = i 0); } function MutationChangeObserver(observeTag) { var m_observer; var m_callback; var m_functionCheckInteresting =3D observeTag ? function(node){return = IsNodeContainsElementWithTag(node, observeTag);} : IsElementNode; function ProcessNodeList(nodeList) { for (var i =3D 0; i < nodeList.length; ++i) { if (m_functionCheckInteresting(nodeList[i])) return true; } return false; } function ProcessDomChange(records) { if (!m_callback) return; for (var i =3D 0; i < records.length; ++i) { var record =3D records[i]; if ((record.addedNodes.length && ProcessNodeList(record.addedNodes)) = || (record.removedNodes.length && = ProcessNodeList(record.removedNodes))) { m_callback(); return; } } } this.Start =3D function(callback) { m_callback =3D callback; m_observer =3D new MutationObserver(ProcessDomChange); m_observer.observe(document, { childList: true, subtree: true }); }; this.Stop =3D function() { m_observer.disconnect(); m_callback =3D null; }; } function DomEventsChangeObserver(observeTag) { var m_callback; var m_functionCheckInteresting =3D observeTag ? function(node){return = IsNodeContainsElementWithTag(node, observeTag);} : IsElementNode; function ProcessEvent(event) { if (!m_callback) return; if (m_functionCheckInteresting(event.target)) m_callback(); } this.Start =3D function(callback) { window.addEventListener("DOMNodeInserted", ProcessEvent); window.addEventListener("DOMNodeRemoved", ProcessEvent); m_callback =3D callback; } this.Stop =3D function() { window.removeEventListener("DOMNodeInserted", ProcessEvent); window.removeEventListener("DOMNodeRemoved", ProcessEvent); m_callback =3D null; } } function TimeoutChangeObserver(observeTag) { var m_interval; var m_callback; var m_tagCount; var m_attribute =3D 'klot_' + ns.GetCurrentTime(); function IsChangesOccure(nodeList) { for (var i =3D 0; i < nodeList.length; ++i) if (!nodeList[i][m_attribute]) return true; return false; } function FillTagInfo(nodeList) { m_tagCount =3D nodeList.length; for (var i =3D 0; i < m_tagCount; ++i) nodeList[i][m_attribute] =3D true; } function TimeoutProcess() { if (!m_callback) return; var nodeList =3D observeTag ? = document.getElementsByTagName(observeTag) : = document.getElementsByTagName("*"); if (nodeList.length !=3D=3D m_tagCount || IsChangesOccure(nodeList)) { FillTagInfo(nodeList); m_callback(); } } this.Start =3D function(callback) { m_callback =3D callback; FillTagInfo(document.getElementsByTagName(observeTag)); m_interval =3D setInterval(TimeoutProcess, 10 * 1000); if (document.readyState !=3D=3D "complete") ns.AddEventListener(window, "load", TimeoutProcess); } this.Stop =3D function() { clearInterval(m_interval); m_callback =3D null; } } ns.GetDomChangeObserver =3D function(observeTag) { var observeTagLowerCase =3D observeTag ? observeTag.toLowerCase() : = observeTag; if (window.MutationObserver && document.documentMode !=3D=3D 11)=09 return new MutationChangeObserver(observeTagLowerCase); if (window.addEventListener) return new DomEventsChangeObserver(observeTagLowerCase); return new TimeoutChangeObserver(observeTagLowerCase); } return ns; }) (KasperskyLab || {}); (function (ns) { function md5cycle(x, k) { var a =3D x[0], b =3D x[1], c =3D x[2], d =3D x[3]; a =3D ff(a, b, c, d, k[0], 7, -680876936); d =3D ff(d, a, b, c, k[1], 12, -389564586); c =3D ff(c, d, a, b, k[2], 17, 606105819); b =3D ff(b, c, d, a, k[3], 22, -1044525330); a =3D ff(a, b, c, d, k[4], 7, -176418897); d =3D ff(d, a, b, c, k[5], 12, 1200080426); c =3D ff(c, d, a, b, k[6], 17, -1473231341); b =3D ff(b, c, d, a, k[7], 22, -45705983); a =3D ff(a, b, c, d, k[8], 7, 1770035416); d =3D ff(d, a, b, c, k[9], 12, -1958414417); c =3D ff(c, d, a, b, k[10], 17, -42063); b =3D ff(b, c, d, a, k[11], 22, -1990404162); a =3D ff(a, b, c, d, k[12], 7, 1804603682); d =3D ff(d, a, b, c, k[13], 12, -40341101); c =3D ff(c, d, a, b, k[14], 17, -1502002290); b =3D ff(b, c, d, a, k[15], 22, 1236535329); a =3D gg(a, b, c, d, k[1], 5, -165796510); d =3D gg(d, a, b, c, k[6], 9, -1069501632); c =3D gg(c, d, a, b, k[11], 14, 643717713); b =3D gg(b, c, d, a, k[0], 20, -373897302); a =3D gg(a, b, c, d, k[5], 5, -701558691); d =3D gg(d, a, b, c, k[10], 9, 38016083); c =3D gg(c, d, a, b, k[15], 14, -660478335); b =3D gg(b, c, d, a, k[4], 20, -405537848); a =3D gg(a, b, c, d, k[9], 5, 568446438); d =3D gg(d, a, b, c, k[14], 9, -1019803690); c =3D gg(c, d, a, b, k[3], 14, -187363961); b =3D gg(b, c, d, a, k[8], 20, 1163531501); a =3D gg(a, b, c, d, k[13], 5, -1444681467); d =3D gg(d, a, b, c, k[2], 9, -51403784); c =3D gg(c, d, a, b, k[7], 14, 1735328473); b =3D gg(b, c, d, a, k[12], 20, -1926607734); a =3D hh(a, b, c, d, k[5], 4, -378558); d =3D hh(d, a, b, c, k[8], 11, -2022574463); c =3D hh(c, d, a, b, k[11], 16, 1839030562); b =3D hh(b, c, d, a, k[14], 23, -35309556); a =3D hh(a, b, c, d, k[1], 4, -1530992060); d =3D hh(d, a, b, c, k[4], 11, 1272893353); c =3D hh(c, d, a, b, k[7], 16, -155497632); b =3D hh(b, c, d, a, k[10], 23, -1094730640); a =3D hh(a, b, c, d, k[13], 4, 681279174); d =3D hh(d, a, b, c, k[0], 11, -358537222); c =3D hh(c, d, a, b, k[3], 16, -722521979); b =3D hh(b, c, d, a, k[6], 23, 76029189); a =3D hh(a, b, c, d, k[9], 4, -640364487); d =3D hh(d, a, b, c, k[12], 11, -421815835); c =3D hh(c, d, a, b, k[15], 16, 530742520); b =3D hh(b, c, d, a, k[2], 23, -995338651); a =3D ii(a, b, c, d, k[0], 6, -198630844); d =3D ii(d, a, b, c, k[7], 10, 1126891415); c =3D ii(c, d, a, b, k[14], 15, -1416354905); b =3D ii(b, c, d, a, k[5], 21, -57434055); a =3D ii(a, b, c, d, k[12], 6, 1700485571); d =3D ii(d, a, b, c, k[3], 10, -1894986606); c =3D ii(c, d, a, b, k[10], 15, -1051523); b =3D ii(b, c, d, a, k[1], 21, -2054922799); a =3D ii(a, b, c, d, k[8], 6, 1873313359); d =3D ii(d, a, b, c, k[15], 10, -30611744); c =3D ii(c, d, a, b, k[6], 15, -1560198380); b =3D ii(b, c, d, a, k[13], 21, 1309151649); a =3D ii(a, b, c, d, k[4], 6, -145523070); d =3D ii(d, a, b, c, k[11], 10, -1120210379); c =3D ii(c, d, a, b, k[2], 15, 718787259); b =3D ii(b, c, d, a, k[9], 21, -343485551); x[0] =3D add32(a, x[0]); x[1] =3D add32(b, x[1]); x[2] =3D add32(c, x[2]); x[3] =3D add32(d, x[3]); } function cmn(q, a, b, x, s, t) { a =3D add32(add32(a, q), add32(x, t)); return add32((a << s) | (a >>> (32 - s)), b); } function ff(a, b, c, d, x, s, t) { return cmn((b & c) | ((~b) & d), a, b, x, s, t); } function gg(a, b, c, d, x, s, t) { return cmn((b & d) | (c & (~d)), a, b, x, s, t); } function hh(a, b, c, d, x, s, t) { return cmn(b^c^d, a, b, x, s, t); } function ii(a, b, c, d, x, s, t) { return cmn(c^(b | (~d)), a, b, x, s, t); } function md51(s) { var n =3D s.length, state =3D [1732584193, -271733879, -1732584194, 271733878], i; for (i =3D 64; i <=3D s.length; i +=3D 64) { md5cycle(state, md5blk(s.substring(i - 64, i))); } s =3D s.substring(i - 64); var tail =3D [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (i =3D 0; i < s.length; i++) tail[i >> 2] |=3D s.charCodeAt(i) << ((i % 4) << 3); tail[i >> 2] |=3D 0x80 << ((i % 4) << 3); if (i > 55) { md5cycle(state, tail); for (i =3D 0; i < 16; i++) tail[i] =3D 0; } tail[14] =3D n * 8; md5cycle(state, tail); return state; } function md5blk(s) { var md5blks =3D [], i; for (i =3D 0; i < 64; i +=3D 4) { md5blks[i >> 2] =3D s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24); } return md5blks; } var hex_chr =3D '0123456789abcdef'.split(''); function rhex(n) { var s =3D '', j =3D 0; for (; j < 4; j++) s +=3D hex_chr[(n >> (j * 8 + 4)) & 0x0F]+hex_chr[(n >> (j * 8)) & = 0x0F]; return s; } function hex(x) { for (var i =3D 0; i < x.length; i++) x[i] =3D rhex(x[i]); return x.join(''); } ns.md5 =3D function (s) { return hex(md51(s)); }; function add32(a, b) { return (a + b) & 0xFFFFFFFF; } if (ns.md5('hello') !=3D '5d41402abc4b2a76b9719d911017c592') { add32 =3D function(x, y) { var lsw =3D (x & 0xFFFF) + (y & 0xFFFF), msw =3D (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } } })(KasperskyLab || {}); var KasperskyLab =3D (function (ns) { ns.Balloon =3D function (balloonName, position, createCallback, = clickCallback) { var self =3D this; var IECompatMode =3D 5;=20 var m_balloon =3D null; var m_timeout =3D null; var m_balloonDivName =3D 'balloon_parent_div_' + balloonName; function AddStyles() { ns.AddStyles([ '.kisb * { position: relative; display:block; overflow-x:hidden; = width: auto; margin:0; padding:0; font-family: Verdana; line-height: = 150%; text-indent:0; border:0; text-align:left; box-sizing:content-box; = letter-spacing: normal;}', '.kisb { z-index:2147483647; width: 280px; cursor:default; = display:block;}', '.kisb a { text-decoration: underline; display:inline-block; }', '.kisb a:hover { text-decoration: none; }', '.kisb a, .kisb a:link, .kisb a:hover, .kisb a:visited { color: = #008ccc;}']); } function ClearTimeoutInternal() { if (m_timeout) clearTimeout(m_timeout); m_timeout =3D 0; } function MouseIsOver() { ClearTimeoutInternal.call(self); } function MouseLeaveBalloon() { if (!m_timeout) { ClearTimeoutInternal(); m_timeout =3D setTimeout(function () { HideBalloon(); }, = 200); } } function MouseClick(mouseArgs) { if (clickCallback && clickCallback(mouseArgs || = window.event)) { HideBalloon.call(self); } } function CreateBalloon(showDuring) { AddStyles(); var balloonDiv =3D document.createElement('div'); balloonDiv.className =3D 'kisb'; balloonDiv.id =3D m_balloonDivName; if (showDuring) { ns.AddEventListener(balloonDiv, 'mouseout', MouseLeaveBalloon); ns.AddEventListener(balloonDiv, 'mouseover', MouseIsOver); } ns.AddEventListener(balloonDiv, 'click', MouseClick); createCallback(balloonDiv); balloonDiv.style.visibility =3D 'hidden'; document.body.appendChild(balloonDiv); return balloonDiv; } function GetElementSize(element) { var fixIECompatMode =3D document.attachEvent && document.documentMode = && document.documentMode =3D=3D IECompatMode; var rect =3D fixIECompatMode ? {width:element.clientWidth || = element.scrollWidth, height:element.clientHeight || = element.scrollHeight} : element.getBoundingClientRect(); var width =3D rect.width ? rect.width : rect.right - = rect.left; var height =3D rect.height ? rect.height : rect.bottom - = rect.top; return { width: width, height: height }; } function HideBalloon() { if (!!m_balloon) m_balloon.style.visibility =3D 'hidden'; } function ShowBalloonInternal(clientX, clientY, showDuring) { m_balloon =3D document.getElementById(m_balloonDivName); if (!m_balloon) m_balloon =3D CreateBalloon(showDuring); if (m_balloon.style.visibility =3D=3D 'visible') return; var x =3D 0; var y =3D 0; var balloonSize =3D GetElementSize(m_balloon); if (position =3D=3D 1) { x =3D clientX; y =3D clientY - (balloonSize.height ? balloonSize.height = : 20); } else if (position =3D=3D 2) { var clientWidth =3D ns.GetPageWidth(); var halfWidth =3D balloonSize.width / 2; if (halfWidth > clientX) x =3D 0; else if (halfWidth + clientX > clientWidth) x =3D clientWidth - balloonSize.width; else x =3D clientX - halfWidth; y =3D (clientY + balloonSize.height > = ns.GetPageHeight()) ? clientY - balloonSize.height : clientY; } else { x =3D clientX; y =3D clientY; } if (y < 0) y =3D 0; var scroll =3D ns.GetPageScroll(); y +=3D scroll.top; x +=3D scroll.left; m_balloon.style.position =3D 'absolute'; m_balloon.style.left =3D Math.round(x).toString() + 'px'; m_balloon.style.top =3D Math.round(y).toString() + 'px'; m_balloon.style.visibility =3D 'visible'; ClearTimeoutInternal(); if (showDuring) m_timeout =3D setTimeout(function () { HideBalloon(); }, = showDuring); } this.ShowBalloon =3D function (getCoord, showAfter, showDuring) = { ClearTimeoutInternal(); if (!showAfter) { var coord =3D getCoord(); ShowBalloonInternal(coord.x, coord.y, showDuring); } else { m_timeout =3D setTimeout(function () { var coord =3D getCoord(); if (coord.isNeed) { ShowBalloonInternal(coord.x, coord.y, = showDuring); } else { HideBalloon(); } }, showAfter); } } this.ShowImmediately =3D function(coord) { ClearTimeoutInternal(); ShowBalloonInternal(coord.x, coord.y, 0); } this.Hide =3D function() { HideBalloon(); } }; return ns; }) (KasperskyLab || {}); (function(){=0A= KasperskyLab.WORK_IDENTIFIERS=3D"DFB379F2-436D-F845,6F6FD999-9973-F943,81= 21203D-7DEB-C748";=0A= var kaspersyLabSessionInstance =3D null; (function ( ns) { var prefix =3D ns.PREFIX || "http://ie.kis.v2.scr.kaspersky-labs.com/"; var signature =3D ns.SIGNATURE || = "C40AC964-6429-7C45-9169-A939E0676DB8"; var workIdentifiersString =3D ns.WORK_IDENTIFIERS || ""; var cspNonce =3D ns.CSP_NONCE || "697BE2A5098F04438205A38AF36A796D" if (workIdentifiersString) { var workIdentifiers =3D workIdentifiersString.split(","); (function ( signature) { var pattern =3D signature.toLowerCase(); for (var i =3D 0, scriptsCount =3D document.scripts.length; i < = scriptsCount; ++i) { var tag =3D document.scripts[i]; if (typeof tag.src =3D=3D=3D 'string' && tag.src.length > 76 && tag.src.toLowerCase().indexOf(pattern) > 0 && = /\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F= ]{12}\/main.js/.test(tag.src)) { for (var i =3D 0; i < workIdentifiers.length; ++i) window[workIdentifiers[i]] =3D true; tag.parentElement.removeChild(tag); return;=20 } } })(signature); } function IsDefined(variable) { return "undefined" !=3D=3D typeof(variable); } var m_syncCallSupported =3D true; var ajaxRequest =3D (function () { var oldOpen =3D window.XMLHttpRequest && = window.XMLHttpRequest.prototype.open; var oldSend =3D window.XMLHttpRequest && = window.XMLHttpRequest.prototype.send; var oldXHR =3D window.XMLHttpRequest; var oldXDR =3D window.XDomainRequest; return { GetAsyncRequest: function () { var xmlhttp =3D oldXDR ? new oldXDR() : new oldXHR(); if (!oldXDR) { xmlhttp.open =3D oldOpen; xmlhttp.send =3D oldSend; } xmlhttp.onprogress =3D function () {}; return xmlhttp; }, GetSyncRequest: function () { var xmlhttp =3D new oldXHR(); xmlhttp.open =3D oldOpen; xmlhttp.send =3D oldSend; xmlhttp.onprogress =3D function () {}; return xmlhttp; } }; })();=09 var PingPongCallReceiver =3D function(caller) { var m_caller =3D caller; var m_isProductConnected =3D false; var m_pingWaitResponse =3D false; var m_requestDelay =3D ns.MaxRequestDelay; var m_requestTimer =3D null; var m_callCallback =3D function(){}; var m_errorCallback =3D function(){}; var m_updateCallback =3D function(){}; function SendRequest() { try=20 { m_caller.Call( "from", null, null, true, function(result, parameters, method) { m_pingWaitResponse =3D false; m_isProductConnected =3D true; if (parameters =3D=3D=3D "undefined" || method =3D=3D=3D = "undefined")=20 { m_errorCallback('AJAX pong is not received. Product is = deactivated'); return; } if (method) { setTimeout(function () { SendRequest(); }, 0); m_callCallback(method, parameters); } }, function(error) { m_pingWaitResponse =3D false; m_isProductConnected =3D false; PostponeInit(); m_errorCallback(error); }); m_pingWaitResponse =3D true; } catch (e) { m_errorCallback('Ajax send ping exception: ' + = (e.message || e)); } } this.StartReceive =3D function(callCallback, errorCallback, = updateCallback) { m_callCallback =3D callCallback; m_errorCallback =3D errorCallback; m_updateCallback =3D updateCallback; m_requestDelay =3D m_updateCallback(); m_requestTimer =3D setTimeout(function ping() { try=20 { if (m_pingWaitResponse) { m_requestTimer =3D setTimeout(ping, 100); return; } m_requestDelay =3D m_updateCallback(); SendRequest(); m_requestTimer =3D setTimeout(ping, m_requestDelay); } catch (e) { m_errorCallback('Send ping request: ' + (e.message || e)); } }, m_requestDelay); }; this.StopReceive =3D function() { clearTimeout(m_requestTimer); m_requestTimer =3D null; m_callCallback =3D function(){}; m_errorCallback =3D function(){}; m_updateCallback =3D function(){}; }; this.IsStarted =3D function() { return m_requestTimer !=3D=3D null; } this.IsProductConnected =3D function() { return m_isProductConnected; }; }; var AjaxCaller =3D function() { var m_path =3D prefix + signature; function NoCacheParameter()=20 { return "&nocache=3D" + Math.floor((1 + Math.random()) * = 0x10000).toString(16); } function GetSpecialPlugins(predefined)=20 { return (predefined) ? "&plugins=3D" + encodeURIComponent(predefined) = : ""; =09 } function PrepareRequestObject(command, commandAttribute, isPost, = isAsync) { var request =3D isAsync ? ajaxRequest.GetAsyncRequest() : = ajaxRequest.GetSyncRequest(); if (request) { var urlPath =3D m_path + "/" + command; if (commandAttribute) urlPath +=3D "/" + commandAttribute; if (isPost) { request.open("POST", urlPath); } else=20 { if (urlPath.indexOf("?") =3D=3D=3D -1) urlPath +=3D "?get"; urlPath +=3D NoCacheParameter(); request.open("GET", urlPath, isAsync); } } return request; } function AsyncCall(command, commandAttribute, data, = callbackResult, callbackError) { try { var request =3D PrepareRequestObject(command, = commandAttribute, data ? true : false, true); if (!request)=20 { callbackError && callbackError("Cannot create AJAX = request!"); return; } var timeout =3D setTimeout(function () { callbackError && callbackError("Cannot send AJAX = request for calling " + command + "/" + commandAttribute); request.abort(); }, 120000); request.onerror =3D function () { clearTimeout(timeout); request.onerror =3D function () { }; request.onload =3D function () { }; callbackError && callbackError("AJAX request error = for calling " + command + "/" + commandAttribute); }; request.onload =3D function () { clearTimeout(timeout); timeout =3D null; request.onload =3D function () { }; request.onerror =3D function () { }; if (request.responseText) { if (callbackResult) callbackResult(request.responseText); request =3D null; return; } request =3D null; if (callbackError) { callbackError("AJAX request with unsupported url = type!");=20 } }; request.send(data); ns.Log("Call native function " + command + "/" + = commandAttribute); } catch (e) { if (callbackError) { callbackError("AJAX request " + command + "/" + = commandAttribute + " exception: " + (e.message || e)); } } }; function SyncCall(command, commandAttribute, data, callbackResult, = callbackError) { try { if (!m_syncCallSupported) return false; var request =3D PrepareRequestObject(command, commandAttribute, data = ? true : false, false); if (!request) { callbackError && callbackError("Cannot create AJAX = request!"); return false; } ns.Log("SyncCall native function " + command); request.send(data); if (request.status =3D=3D=3D 200) { if (callbackResult && request.responseText) callbackResult(request.responseText); request =3D null; return true; } } catch (e) { if (callbackError) callbackError("AJAX request " + command + " = exception: " + (e.message || e)); } return false; } this.Start =3D function(callbackSuccess) { callbackSuccess(); } this.SendLog =3D function(message) { AsyncCall("log?" + encodeURIComponent(message)); } this.Call =3D function(command, commandAttribute, data, isAsync, = callbackResult, callbackError)=20 { var callFunction =3D (isAsync || !IsDefined(isAsync)) ? AsyncCall : = SyncCall; return callFunction( command, commandAttribute, data, function(responseText) { var commandResponse =3D ns.JSONParse(responseText); if (commandResponse.result =3D=3D=3D -1610612735) { callFunction( command, commandAttribute, data, function(responseText) { if (!callbackResult) return; commandResponse =3D ns.JSONParse(responseText); callbackResult(commandResponse.result, = commandResponse.parameters, commandResponse.method); }, callbackError); } else { if (callbackResult) callbackResult(commandResponse.result, = commandResponse.parameters, commandResponse.method); } =09 }, callbackError); } this.InitCall =3D function(pluginsInitData, callbackResult, = callbackError) { var specialPlugins =3D IsDefined(ns.PLUGINS_LIST) ? = GetSpecialPlugins(ns.PLUGINS_LIST) : GetSpecialPlugins(""); var serializedInitData =3D (pluginsInitData.length) ? "&data=3D" + = encodeURIComponent(ns.JSONStringify({data : pluginsInitData})) : ""; if (document.location.href =3D=3D "data:text/html,chromewebdata") return callbackError(); AsyncCall( "init?url=3D" + encodeURIComponent(document.location.href) + = specialPlugins + serializedInitData, null, null, function(responseText) { var initSettings =3D ns.JSONParse(responseText); m_path =3D (prefix || '/') + initSettings.ajaxId + '/' + = initSettings.sessionId; callbackResult(initSettings); }, callbackError); } }; var m_webSocketSupported =3D IsDefined(window.WebSocket); var WebSocketWrapper =3D function() { var WebSocketObject =3D WebSocket; var WebSocketSend =3D WebSocket.prototype.send; var WebSocketClose =3D WebSocket.prototype.close; this.GetWebSocket =3D function(path) { var webSocket =3D new WebSocketObject(path); webSocket.send =3D WebSocketSend; webSocket.close =3D WebSocketClose; return webSocket; } } var m_webSocketWrapper =3D m_webSocketSupported ? new WebSocketWrapper = : null; var WebSocketCaller =3D function() { var m_socket; var m_waitResponse =3D {}; var m_callReceiver =3D function(){}; var m_errorCallback =3D function(){}; var m_callReceiverEnabled =3D false; var m_connected =3D false; var m_initialized =3D false; var m_deferredCalls =3D []; var m_wasCallbackErrorCalled =3D false; function GetWebSocket(callbackSuccess, callbackError) { var url =3D (prefix =3D=3D=3D "/")=20 ? document.location.protocol + "//" + document.location.host + = prefix=20 : prefix; var webSocketPath =3D (url.indexOf("http:") =3D=3D=3D 0)=20 ? "ws" + url.substr(4)=20 : "wss" + url.substr(5); webSocketPath +=3D signature + "/websocket?url=3D" + = encodeURIComponent(document.location.href) + "&nocache=3D" + (new = Date().getTime()); var webSocket; try { webSocket =3D m_webSocketWrapper.GetWebSocket(webSocketPath); } catch (e) { m_webSocketSupported =3D false; throw e; } webSocket.onmessage =3D function(arg) { ProcessMessage(arg, callbackError); }; webSocket.onerror =3D function() { m_webSocketSupported =3D false; if (!m_wasCallbackErrorCalled && callbackError) callbackError(); m_wasCallbackErrorCalled =3D true; } webSocket.onopen =3D function() { m_wasCallbackErrorCalled =3D false; m_connected =3D true; if (callbackSuccess) callbackSuccess(); } webSocket.onclose =3D function(closeEvent) { m_connected =3D false; if (closeEvent && closeEvent.code =3D=3D 1006) webSocket.onerror(closeEvent); m_errorCallback("websocket closed"); }; return webSocket; } function ProcessMessage(arg, errorCallback) { m_wasCallbackErrorCalled =3D false; var response =3D ns.JSONParse(arg.data); if (m_waitResponse[response.callId]) { var callWaiter =3D m_waitResponse[response.callId]; delete m_waitResponse[response.callId]; clearTimeout(callWaiter.timeout); if (callWaiter.callbackResult) callWaiter.callbackResult(response.commandData); return; } if (!m_initialized) { m_deferredCalls.push(arg); return; } if (response.command =3D=3D=3D "from") { var command =3D ns.JSONParse(response.commandData); m_callReceiver(command.method, command.parameters); } else if (response.command =3D=3D=3D "reconnect") { m_socket.onmessage =3D function(){}; m_socket.onerror =3D function(){}; m_socket.onopen =3D function(){}; m_socket.onclose =3D function(){}; m_socket.close(); m_socket =3D GetWebSocket(function() { CallImpl("restore", "", response.commandData); }, errorCallback); } } function CallImpl(command, commandAttribute, data, callbackResult, = callbackError) { try { var callId =3D 0; if (callbackResult || callbackError) { callId =3D Math.floor((1 + Math.random()) * 0x10000); var timeout =3D setTimeout(function() { delete m_waitResponse[callId]; if (callbackError) callbackError("websocket call timeout for " + command + "/" + = commandAttribute); }, 120000); var callWaiter =3D=20 { callId: callId, callbackResult: callbackResult, timeout: timeout }; m_waitResponse[callId] =3D callWaiter; } m_socket.send(ns.JSONStringify( { callId: callId, command: command, commandAttribute: commandAttribute || "", commandData: data || "" })); } catch (e) { if (callbackError) callbackError("websocket call " + command + "/" + commandAttribute = + " exception: " + (e.message || e)); } } this.Start =3D function(callbackSuccess, callbackError) { try { m_socket =3D GetWebSocket(callbackSuccess, callbackError); } catch (e) { if (callbackError) callbackError("websocket start exception: " + (e.message || e)); } } this.SendLog =3D function(message) { CallImpl("log", null, message); } this.Call =3D function(command, commandAttribute, data, isAsync, = callbackResult, callbackError)=20 { if (IsDefined(isAsync) && !isAsync) return false; CallImpl( command,=20 commandAttribute,=20 data, callbackResult=20 ? function(responseText) { if (callbackResult) { var command =3D ns.JSONParse(responseText); callbackResult(command.result, command.parameters, = command.method); } } : null, callbackError); } this.InitCall =3D function(pluginsInitData, callbackResult, = callbackError) { var initData =3D=20 { url: document.location.href, plugins: (IsDefined(ns.PLUGINS_LIST)) ? ns.PLUGINS_LIST : "", data: { data : pluginsInitData } }; if (document.location.href =3D=3D "data:text/html,chromewebdata") return callbackError(); CallImpl("init", null, ns.JSONStringify(initData), function(responseText) { m_initialized =3D true; var initSettings =3D ns.JSONParse(responseText); callbackResult(initSettings); for (var i =3D 0; i < m_deferredCalls.length; ++i) ProcessMessage(m_deferredCalls[i], callbackError); m_deferredCalls =3D []; }, callbackError); } this.StartReceive =3D function(callMethod, errorCallback) { m_callReceiverEnabled =3D true; m_callReceiver =3D callMethod; m_errorCallback =3D errorCallback; } this.StopReceive =3D function() { m_callReceiverEnabled =3D false; m_callReceiver =3D function(){}; m_errorCallback =3D function(){}; if (m_socket) { m_connected =3D false; m_socket.onmessage =3D function(){}; m_socket.onerror =3D function(){}; m_socket.onopen =3D function(){}; m_socket.onclose =3D function(){}; m_socket.close(); m_socket =3D null; } } this.IsStarted =3D function() { return m_callReceiverEnabled; } this.IsProductConnected =3D function() { return m_connected; } } var CallReceiver =3D function (caller) { var m_plugins =3D {}; var m_receiver =3D m_webSocketSupported ? caller : new = PingPongCallReceiver(caller); var m_caller =3D caller; this.RegisterMethod =3D function (methodName, callback) { var pluginId =3D GetPluginIdFromMethodName(methodName); if (pluginId) { var methods =3D GetPluginMethods(pluginId); if (methods) { if (methods[methodName]) { throw 'Already registered method ' + methodName; } methods[methodName] =3D callback; } else { throw 'Cannot registered ' + methodName; } } }; this.RegisterPlugin =3D function (pluginId, callbackPing, = callbackError) { if (m_plugins[pluginId]) { throw 'Already started plugin ' + pluginId; } var plugin =3D { onError: callbackError, onPing: callbackPing, methods: {} }; m_plugins[pluginId] =3D plugin; if (!m_receiver.IsStarted()) m_receiver.StartReceive(CallMethod, ReportError, UpdateDelay); }; this.UnregisterPlugin =3D function (pluginId) { delete m_plugins[pluginId]; if (IsPluginListEmpty()) m_receiver.StopReceive(); }; this.UnregisterAll =3D function () { if (IsPluginListEmpty()) return; m_receiver.StopReceive(); m_plugins =3D {}; }; this.IsEmpty =3D IsPluginListEmpty; function IsPluginListEmpty() { for (var key in m_plugins) { if (m_plugins.hasOwnProperty(key)) return false; } return true; } this.IsProductConnected =3D function() { return m_receiver.IsProductConnected(); } function UpdateDelay() { var newDelay =3D ns.MaxRequestDelay; var currentTime =3D ns.GetCurrentTime(); for (var pluginId in m_plugins) { try { var onPing =3D m_plugins[pluginId].onPing; if (onPing) { var delay =3D onPing(currentTime); if (delay < newDelay && delay > 0 && delay < = ns.MaxRequestDelay) { newDelay =3D delay; } } } catch (e) { ReportPluginError(pluginId, 'UpdateDelay: ' + = (e.message || e)); } } return newDelay; } function ReportPluginError(pluginId, status) { var onError =3D m_plugins[pluginId].onError; if (onError) onError(status); } function ReportError(status) { for (var pluginId in m_plugins) ReportPluginError(pluginId, status); } function GetPluginIdFromMethodName(methodName) { if (methodName) { var names =3D methodName.split('.', 2); if (names.length =3D=3D=3D 2) { return names[0]; } } return null; } function GetPluginMethods(pluginId) { var plugin =3D m_plugins[pluginId]; return plugin ? plugin.methods : null; } function CallPluginMethod(pluginId, methodName, args) { var methods =3D GetPluginMethods(pluginId); if (methods) { var callback =3D methods[methodName]; if (callback) { try { callback(args); m_caller.SendLog(methodName + " executed."); return true; } catch (e) { m_caller.SendLog("Call " + methodName + " in plugin " + pluginId + = " error: " + (e.message || e)); } } } m_caller.SendLog("Cannot call " + methodName + " for plugin = " + pluginId); return false; } function CallMethod(methodName, args) { ns.Log("Try to find js callback " + methodName); var pluginId =3D GetPluginIdFromMethodName(methodName); if (pluginId) CallPluginMethod(pluginId, methodName, args); } }; var KasperskyLabSessionClass =3D function (caller) { var self =3D this; var m_caller =3D caller; var m_callReceiver =3D new CallReceiver(caller); function CallImpl(methodName, arrayOfArgs, callbackResult, = callbackError, isAsync) { var data =3D (arrayOfArgs && arrayOfArgs.length)=20 ? ns.JSONStringify( { result: 0, method: methodName, parameters: arrayOfArgs }) : null; return m_caller.Call("to", methodName, data, isAsync, callbackResult, = callbackError); } function Call(methodName, arrayOfArgs, callbackResult, = callbackError) { CallImpl(methodName, arrayOfArgs, callbackResult, callbackError, = true); } function SyncCall(methodName, arrayOfArgs, callbackResult, = callbackError) { return CallImpl(methodName, arrayOfArgs, callbackResult, = callbackError, false); } function Stop() { try { m_callReceiver.UnregisterAll(); ns.Log("session stopped"); if (m_callReceiver.IsProductConnected()) { if (!m_caller.Call("shutdown", null, null, false)) m_caller.Call("shutdown"); } } catch (e) { } } function DeactivatePlugin(pluginId) { ns.Log('DeactivatePlugin ' + pluginId); m_callReceiver.UnregisterPlugin(pluginId); if (m_callReceiver.IsEmpty()) { Stop(); } } function ActivatePlugin(pluginId, callbackPing, callbackError) { ns.Log('ActivatePlugin ' + pluginId); m_callReceiver.RegisterPlugin(pluginId, callbackPing, = function (e) { callbackError && callbackError(e); m_callReceiver.UnregisterPlugin(pluginId); if (m_callReceiver.IsEmpty()) { Stop(); } }); } function RegisterMethod(methodName, callback) { ns.Log('RegisterMethod ' + methodName); m_callReceiver.RegisterMethod(methodName, callback); } this.Log =3D function (msg) { =20 msg && msg.length <=3D 2048 ? m_caller.SendLog(msg) : = m_caller.SendLog(msg.substring(0, 2048) + '<...>'); }; this.InitializePlugin =3D function (init) { init( function () { ActivatePlugin.apply(self, arguments); }, function () { RegisterMethod.apply(self, arguments); }, function () { Call.apply(self, arguments); }, function () { DeactivatePlugin.apply(self, arguments); }, function () { return SyncCall.apply(self, arguments); } ); }; ns.AddEventListener(window, "unload", function()=20 { if (!m_callReceiver.IsEmpty()) Stop(); }); }; var runners =3D {}; var pluginsInitData =3D []; ns.AddRunner =3D function(pluginName, runnerFunc, initParameters) { runners[pluginName] =3D runnerFunc; if (initParameters) { pluginsInitData.push({plugin: pluginName, parameters: = initParameters}); } }; ns.ContentSecurityPolicyNonceAttribute =3D cspNonce; function GetSupportedCaller() { return m_webSocketSupported=20 ? new WebSocketCaller() : new AjaxCaller; } function Init() { var caller =3D GetSupportedCaller(); caller.Start( function()=20 { caller.InitCall( pluginsInitData, function(initSettings) { ns.IsRtl =3D initSettings.rtl; kaspersyLabSessionInstance =3D new = KasperskyLabSessionClass(caller); var plugins =3D initSettings.plugins; for (var i =3D 0, pluginsCount =3D plugins.length; i < = pluginsCount; ++i) { var plugin =3D plugins[i]; var pluginRunnerFunction =3D runners[plugin.name]; if (pluginRunnerFunction) pluginRunnerFunction(KasperskyLab, kaspersyLabSessionInstance, = plugin.settings, plugin.localization); } }, function() { PostponeInit(); }); }, function()=20 { setTimeout(function () { Init(); }, 0); }); } var postponedInitTimeout =3D null; function PostponeInit() { clearTimeout(postponedInitTimeout) postponedInitTimeout =3D setTimeout(function () { Init(); }, 60 * = 1000); } setTimeout(function () { Init(); }, 0);=09 })(KasperskyLab); (function (ns)=20 { ns.waitForApiInjection =3D function(isApiInjected, eventName, callback) { if (isApiInjected()) { callback(); return; } var subscription =3D createSubscription(eventName, onApiInjected) function onApiInjected() { if (isApiInjected()) { subscription.unsubscribe(); callback(); } } } function createSubscription(eventName, callback) { var windowEventsSupported =3D document.createEvent || = window.addEventListener; return new (windowEventsSupported ? ModernSubscription : = IeLegacySubscription)(eventName, callback); } function ModernSubscription(eventName, callback) { ns.AddRemovableEventListener(window, eventName, callback); this.unsubscribe =3D function() { ns.RemoveEventListener(window, eventName, callback); } } function IeLegacySubscription(eventName, callback) { ns.AddRemovableEventListener(document.documentElement, = 'propertychange', onPropertyChange); this.unsubscribe =3D function() { ns.RemoveEventListener(document.documentElement, = 'propertychange', onPropertyChange); } function onPropertyChange(event) { if (event.propertyName =3D=3D eventName) callback(); } } })(KasperskyLab || {}); var tabIdPropertyName =3D KasperskyLab.LIGHT_PLUGIN_API_KEY || = 'klTabId_kis'; var scriptPluginId =3D Math.floor((1 + Math.random()) * = 0x10000).toString(16); function isApiInjected() { return !!window[tabIdPropertyName]; } function makeTopLevelArgument() { return window =3D=3D window.top ? 'true' : 'false'; } function removeTabIdProperty() { try { delete window[tabIdPropertyName]; } catch (e) { window[tabIdPropertyName] =3D undefined; }=09 } var documentInitParameters =3D isApiInjected() ? = [String(window[tabIdPropertyName]), makeTopLevelArgument(), = scriptPluginId] : null; KasperskyLab.AddRunner("light_doc", function (ns, session) { session.InitializePlugin(function(activatePlugin, _, callFunction) { activatePlugin('light_doc'); =09 if (documentInitParameters) { removeTabIdProperty(); return; } =09 ns.waitForApiInjection(isApiInjected, tabIdPropertyName, function() { var tabId =3D String(window[tabIdPropertyName]); removeTabIdProperty(); callFunction("light_doc.registerDocument", [ tabId,=20 document.URL, makeTopLevelArgument(), scriptPluginId ]); });=09 }); }, documentInitParameters); (function (ns) { ns.IsPositionEqual =3D function(prevPos, currentPos) { return prevPos && currentPos && prevPos.top =3D=3D=3D currentPos.top && = prevPos.left =3D=3D=3D currentPos.left; }; ns.GetAbsoluteElementPosition =3D function(element) { var box =3D element.getBoundingClientRect(); var scroll =3D ns.GetPageScroll(); return { left: box.left + scroll.left, top: box.top + scroll.top, right: box.right + scroll.left, bottom: box.bottom + scroll.top }; }; })(KasperskyLab || {}); (function (ns)=20 { ns.ProtectableElementDetector =3D function(protectMode) { var m_typesForbidden =3D ['hidden', 'submit', 'radio', 'checkbox', = 'button', 'image']; var m_protectMode =3D protectMode; this.Test =3D function(element) { if (m_protectMode < 2 || m_protectMode > 3) return false; var elementType =3D element.getAttribute('type'); elementType =3D elementType && elementType.toLowerCase(); if (m_protectMode =3D=3D=3D 2) { if (elementType !=3D 'password') return false; } else if (Includes(m_typesForbidden, elementType)) { return false; } if (GetComputedStyle(element, 'display') =3D=3D=3D 'none') return false; var maxLength =3D parseInt(element.getAttribute('maxlength'), 10); return typeof maxLength =3D=3D=3D 'number' && maxLength <=3D 3 ? false = : !element.readOnly; }; function Includes(list, text) { var i =3D 0, count =3D list.length; for (; i < count; ++i) if (list[i] =3D=3D=3D text) return true; return false; } function GetComputedStyle(element, property) { var value; if (element.currentStyle) { value =3D element.currentStyle[property]; } else { var styles =3D window.getComputedStyle(element, ''); if (styles) value =3D styles.getPropertyValue(property); } return typeof value !=3D=3D 'string' ? '' : value.toLowerCase(); } } })(KasperskyLab || {}); (function (ns) { ns.SecureInputTooltip =3D function(locales) { var m_tooltip, m_curPosition, m_top, m_bottom, m_pointer, m_needRestoreFocus, that =3D this; function CreateDivWithStyle(cssText) { var div =3D document.createElement('div'); div.style.cssText =3D cssText; return div; } function CreateTooltip() { var balloonDiv =3D = CreateDivWithStyle("position:absolute;display:block;width:auto;height:aut= o;padding:0;margin:0;text-align:left;border:none;border-radius:0;backgrou= nd:#transparent;z-index:2147483646;font-size:0px"); var iconDiv =3D = CreateDivWithStyle("position:relative;display:block;height:auto;width:aut= o;padding:35px 10px 11px;margin:0;text-align:left;border:1px solid = #B2B2B2;border-radius:5px;background:#fff url(" + = KasperskyLab.GetResourceSrc('/vk/VkTooltipBanner.png') + ") 10px 9px = no-repeat;z-index:2147483646;"); var close =3D = CreateDivWithStyle("position:absolute;right:10px;top:6px;display:inline-b= lock;height:16px;width:8px;padding:0;margin:0;text-align:left;background:= url(" + KasperskyLab.GetResourceSrc('/vk/close_icon.png') + ") right = center = no-repeat;cursor:pointer;border:none;border-radius:0;white-space:nowrap;z= -index:2147483646;"); var contentText =3D = CreateDivWithStyle("position:static;display:block;width:auto;height:auto;= padding:0;margin:0;font:11px/1 = Arial,Helvetica,sans-serif;text-align:left;color:#000;border:none;border-= radius:0;background:#transparent;white-space:nowrap;z-index:2147483646;")= ; m_top =3D = CreateDivWithStyle("position:relative;display:block;width:32px;height:12p= x;padding:0;margin:0 0 = -1px;text-align:left;border:none;border-radius:0;background:#transparent;= z-index:2147483647;"); m_bottom =3D = CreateDivWithStyle("position:relative;display:block;width:32px;height:12p= x;padding:0;margin:-1px 0 = 0;text-align:left;border:none;border-radius:0;background:#transparent;z-i= ndex:2147483647;"); m_pointer =3D = CreateDivWithStyle("position:static;display:block;padding:0;margin:0;heig= ht:12px;width:100%;z-index:2147483647;"); balloonDiv.appendChild(m_top); balloonDiv.appendChild(iconDiv); balloonDiv.appendChild(m_bottom); iconDiv.appendChild(close); iconDiv.appendChild(contentText); = contentText.appendChild(document.createTextNode(locales["VkTooltipText"])= ); close.onmouseover =3D function(){m_needRestoreFocus =3D true;}; close.onmouseout =3D function(){m_needRestoreFocus =3D false;}; m_tooltip =3D balloonDiv; } function PositionTooltipPointer(position) { if (m_pointer.parentNode) m_pointer.parentNode.removeChild(m_pointer); var destinationDiv, pointerBackgroundImage; if (position =3D=3D=3D "top") { pointerBackgroundImage =3D "url(" + = ns.GetResourceSrc('/vk/pointer_top.png') + ") no-repeat right bottom"; destinationDiv =3D m_top; }=20 else if (position =3D=3D=3D "bottom")=20 { pointerBackgroundImage =3D "url(" + = ns.GetResourceSrc('/vk/pointer_bottom.png') + ") no-repeat right top"; destinationDiv =3D m_bottom; } m_pointer.style.background =3D pointerBackgroundImage; destinationDiv.appendChild(m_pointer); } function PositionTooltip(element) { var inputPosition =3D ns.GetAbsoluteElementPosition(element); if (!ns.IsPositionEqual(m_curPosition, inputPosition)) { m_tooltip.style.left =3D inputPosition.left + "px"; var tooltipHeight =3D m_tooltip.offsetHeight; var inputTopRelative =3D inputPosition.top - ns.GetPageScroll().top; var clientHeightUnderInput =3D ns.GetPageHeight() - inputTopRelative = - element.offsetHeight; if ((clientHeightUnderInput > tooltipHeight - 1) ||=20 (inputPosition.top - tooltipHeight + 1 < 0)) { m_tooltip.style.top =3D (inputPosition.top + = element.offsetHeight - 1) + "px"; PositionTooltipPointer("top"); } else { m_tooltip.style.top =3D (inputPosition.top - = tooltipHeight + 1) + "px"; PositionTooltipPointer("bottom"); } m_curPosition =3D inputPosition; } } this.Show =3D function(element) { if (!m_tooltip) CreateTooltip(); document.body.appendChild(m_tooltip); PositionTooltip(element); var timer =3D setInterval(function() { PositionTooltip(element); }, = 100); this.Hide =3D function() { clearInterval(timer); document.body.removeChild(m_tooltip); if (m_needRestoreFocus) setTimeout(function(){element.focus();}, 0); m_tooltip =3D null; this.Show =3D function(){}; this.Hide =3D function(){}; }; setTimeout(function() { that.Hide(); }, 3000); }; this.Hide =3D function(){};=09 }; })(KasperskyLab || {}); (function (ns) { ns.VirtualKeyboardInputIcon =3D function(clickCallback) { var m_curPosition, m_iconDiv, m_element, m_positionTimer, m_visible =3D false; function CreateDivWithStyle(cssText) { var div =3D document.createElement('div'); div.style.cssText =3D cssText; return div; } function ControlIconDisplaying(e) { var eventArg =3D e || window.event; if (eventArg.keyCode =3D=3D=3D 9 || eventArg.keyCode =3D=3D=3D 16) return; if (m_element.value =3D=3D=3D "") ShowInternal(); else HideInternal(); } function HideInternal() { if (!m_visible) return; clearInterval(m_positionTimer); document.body.removeChild(m_iconDiv); m_visible =3D false; } function ShowInternal() { if (m_visible) return; document.body.appendChild(m_iconDiv); PositionIcon(); m_positionTimer =3D setInterval(PositionIcon, 100); m_visible =3D true; } function PositionIcon() { var iconStyle =3D m_iconDiv.style, inputPosition =3D ns.GetAbsoluteElementPosition(m_element); if (!ns.IsPositionEqual(m_curPosition, inputPosition)) { iconStyle.left =3D inputPosition.left + m_element.offsetWidth - 20 + = 'px'; iconStyle.top =3D inputPosition.top + (m_element.offsetHeight - 16) / = 2 + 'px'; m_curPosition =3D inputPosition; } } function CreateIcon() { m_iconDiv =3D = CreateDivWithStyle('position:absolute;display:block;width:16px;height:16p= x;background:url(' + ns.GetResourceSrc('/vk/VkInputFieldIcon.png') + ') = no-repeat center = center;cursor:pointer;z-index:2147483647;font-size:0px'); ns.AddEventListener(m_iconDiv, 'mouseover', function () { m_iconDiv.style.filter =3D 'alpha(opacity=3D60)';=09 m_iconDiv.style.opacity =3D 0.6; }); ns.AddEventListener(m_iconDiv, 'mouseout', function() { m_iconDiv.style.filter =3D 'alpha(opacity=3D100)';=09 m_iconDiv.style.opacity =3D 1; }); ns.AddEventListener(m_iconDiv, 'click', clickCallback); } CreateIcon(); this.Show =3D function(element) { this.Hide(); m_element =3D element; ShowInternal(); ns.AddRemovableEventListener(m_element, "keyup", = ControlIconDisplaying) this.Hide =3D function() { HideInternal(); this.Hide =3D function(){}; ns.RemoveEventListener(m_element, "keyup", ControlIconDisplaying); }; }; this.Hide =3D function(){}; }; })(KasperskyLab || {}); KasperskyLab.AddRunner("vk", function (ns, session, settings, locales) { var VirtualKeyboard =3D function() { var m_callFunction, m_syncCallFunction; var m_virtualKeyboardIconShowMode =3D 0; var m_secureInputProtectMode =3D 0; var m_activeElement =3D null; var m_lastFocusedElement =3D null; var m_protectedState =3D 0; var m_enabledSecureInput =3D false; var m_protectChangeTimeout; var m_protectableVirtualKeyboardChecker =3D new = ns.ProtectableElementDetector(settings.vkProtectMode); var m_protectableSecureInputChecker =3D null; var m_protectableVirtualKeyboardIconChecker =3D null; var m_attributeName =3D "vk_" + Math.floor((1 + Math.random()) * = 0x10000).toString(16); function ShowVirtualKeyboard() { if (m_lastFocusedElement) m_lastFocusedElement.focus(); m_callFunction("vk.showKeyboard"); } var m_tooltip =3D new ns.SecureInputTooltip(locales); var m_icon =3D new ns.VirtualKeyboardInputIcon(ShowVirtualKeyboard); var m_iconHideTimer; var m_postponeStart; var m_shutdown =3D false; session.InitializePlugin(function (activatePlugin, registerMethod, = callFunction, deactivatePlugin, syncCallFunction) { m_callFunction =3D callFunction; m_syncCallFunction =3D syncCallFunction; activatePlugin('vk', OnPing); registerMethod('vk.settings', SetSettings); }); function OnPing() { return (m_protectedState =3D=3D 1 || m_protectedState =3D=3D 2) ? 500 = : ns.MaxRequestDelay; } function SetSettings(argumentList) { var newVirtualKeyboardIconShowMode =3D parseInt(argumentList[0], 10); var newSecureInputProtectMode =3D parseInt(argumentList[1], 10); SetSettingsImpl(newVirtualKeyboardIconShowMode, = newSecureInputProtectMode); } function SetSettingsImpl(newVirtualKeyboardIconShowMode, = newSecureInputProtectMode) { if (newSecureInputProtectMode !=3D m_secureInputProtectMode) m_protectableSecureInputChecker =3D new = ns.ProtectableElementDetector(newSecureInputProtectMode); if (newVirtualKeyboardIconShowMode !=3D m_virtualKeyboardIconShowMode) m_protectableVirtualKeyboardIconChecker =3D new = ns.ProtectableElementDetector(newVirtualKeyboardIconShowMode); var needToUpdate =3D (newSecureInputProtectMode > = m_secureInputProtectMode || newVirtualKeyboardIconShowMode > = m_virtualKeyboardIconShowMode); m_secureInputProtectMode =3D newSecureInputProtectMode; m_virtualKeyboardIconShowMode =3D newVirtualKeyboardIconShowMode; if (needToUpdate && m_observer) m_observer.settingsChanged(); } function NeedProtectElement(element) { return m_protectableSecureInputChecker.Test(element) || = m_protectableVirtualKeyboardChecker.Test(element); } function HandleStartProtectCallback(result, args, needSecureInputCall) { if (m_protectedState =3D=3D=3D 3)=09 { if (result =3D=3D=3D 0) StopProtect(); else m_protectedState =3D 0;=09 return; } if (result =3D=3D=3D 0) { if (!args || args.length < 1) { session.Log("ERR VK - unexpected arguments"); return; } m_enabledSecureInput =3D args[0] =3D=3D=3D "true"; m_protectedState =3D 2;=09 var needSecureInput =3D = m_protectableSecureInputChecker.Test(m_activeElement); if (needSecureInput =3D=3D=3D needSecureInputCall) ShowBalloons(); else CheckProtectModeAndShowBalloons(); return; } else if (result =3D=3D=3D 1) { m_postponeStart =3D setTimeout(function() = {OnElementFocus(m_activeElement);}, 100); } m_protectedState =3D 0;=09 } function OnError(e) { session.Log('ERR VK - ' + (e.message || e)); } function StartProtect() { var needSecureInput =3D = m_protectableSecureInputChecker.Test(m_activeElement); m_protectedState =3D 1;=09 m_callFunction("vk.startProtect", [needSecureInput.toString()], = function(result, args) { HandleStartProtectCallback(result, args, = needSecureInput);}, OnError); } function ChangeMode() { var needSecureInput =3D = m_protectableSecureInputChecker.Test(m_activeElement); m_protectedState =3D 1;=09 m_callFunction("vk.changeMode", [needSecureInput.toString()], = function(result, args) { HandleStartProtectCallback(result, args, = needSecureInput);}, OnError); } function StopProtect() { m_protectedState =3D 3;=09 m_callFunction("vk.stopProtect", [], function (result) { if (m_protectedState =3D=3D=3D 1 && result =3D=3D=3D 0)=09 { StartProtect(); return; } m_protectedState =3D 0; =09 m_activeElement =3D null; }, OnError); } function ShowBalloons() { if (m_enabledSecureInput) m_tooltip.Show(m_activeElement); if (m_protectableVirtualKeyboardIconChecker.Test(m_activeElement)) m_icon.Show(m_activeElement); } function CheckProtectModeAndShowBalloons() { var needSecureInput =3D = m_protectableSecureInputChecker.Test(m_activeElement); if (needSecureInput !=3D m_enabledSecureInput) ChangeMode(); else ShowBalloons(); } function OnElementFocus(element) { if (m_shutdown) return; if (m_iconHideTimer) { clearTimeout(m_iconHideTimer); m_iconHideTimer =3D null; m_icon.Hide(); } if (!NeedProtectElement(element)) { m_activeElement =3D null; return; } m_activeElement =3D element; m_lastFocusedElement =3D element; clearTimeout(m_postponeStart); clearTimeout(m_protectChangeTimeout); m_protectChangeTimeout =3D setTimeout(function () { ProcessFocus(); }, = 0); } function OnElementBlur(element) { if (m_shutdown) return; clearTimeout(m_postponeStart); m_iconHideTimer =3D setTimeout(function() {m_icon.Hide();}, 500); m_tooltip.Hide(); clearTimeout(m_protectChangeTimeout); m_protectChangeTimeout =3D setTimeout(function () { ProcessBlur(); }, = 0); } function OnSettingsChanged(element) { var needProtectElement =3D NeedProtectElement(element); if ((m_activeElement !=3D=3D element) ^ needProtectElement) return; if (needProtectElement) OnElementFocus(element); else OnElementBlur(element); } function ProcessFocus() { if (m_protectedState =3D=3D=3D 0) =09 StartProtect(); else if (m_protectedState =3D=3D=3D 2) =09 CheckProtectModeAndShowBalloons(); else if (m_protectedState =3D=3D=3D 3)=09 m_protectedState =3D 1; =09 } function ProcessBlur() { if (m_protectedState =3D=3D=3D 2)=09 StopProtect(); else if (m_protectedState =3D=3D=3D 1)=09 m_protectedState =3D 3;=09 } SetSettingsImpl(settings.vkMode, settings.skMode); ns.AddEventListener(window, 'unload', function () { clearTimeout(m_protectChangeTimeout); clearTimeout(m_postponeStart); m_shutdown =3D true; m_observer.unbind(); }); var m_observer =3D new FocusChangeObserver(OnElementFocus, = OnElementBlur, OnSettingsChanged); }; function FocusChangeObserver(focusHandler, blurHandler, = settingsChangedHandler) { var m_targetPropertyName; if (document.addEventListener) { document.addEventListener('focus', onFocus, true); document.addEventListener('blur', onBlur, true); m_targetPropertyName =3D 'target'; } else { document.attachEvent('onfocusin', onFocus); document.attachEvent('onfocusout', onBlur); m_targetPropertyName =3D 'srcElement'; } var m_focusedElement =3D tryToGetFocusedInput(); this.settingsChanged =3D function () { if (m_focusedElement) settingsChangedHandler(m_focusedElement); } this.unbind =3D function () { if (document.removeEventListener) { document.removeEventListener('focus', onFocus, true); document.removeEventListener('blur', onBlur, true); } else { document.detachEvent('onfocusin', onFocus); document.detachEvent('onfocusout', onBlur); } if (m_focusedElement) { blurHandler(m_focusedElement); m_focusedElement =3D null; } } if (m_focusedElement) focusHandler(m_focusedElement); function tryToGetActiveElement() { try { return document.activeElement; } catch (e) {} return null; } function tryToGetFocusedInput() { var element =3D tryToGetActiveElement(); return (document.hasFocus() && isInputElement(element)) ? = element : null; } function isInputElement(element) { return element && element.tagName && element.tagName.toLowerCase() =3D=3D=3D 'input'; } function onBlur(event) { if (m_focusedElement) { var element =3D m_focusedElement; m_focusedElement =3D null; blurHandler(element); } } function onFocus(event) { var element =3D event[m_targetPropertyName]; if (isInputElement(element)) { m_focusedElement =3D element; focusHandler(element); } } } var instance =3D null; function RunVirtualKeyboard() { try { if (!instance) instance =3D new VirtualKeyboard(); } catch(e) { session.Log("Virtual keyboard exception " + (e.message || e)); } } if (document.readyState =3D=3D=3D "loading") { if (document.addEventListener) { document.addEventListener("DOMContentLoaded", RunVirtualKeyboard, = true); } else if (document.all) { document.attachEvent("onreadystatechange", function() { if (document.readyState !=3D=3D "loading") RunVirtualKeyboard(); }); } else { document.attachEvent("onload", function() { RunVirtualKeyboard(); }); } } else { RunVirtualKeyboard(); } }); KasperskyLab.AddRunner("cb", function (ns, session, settings, locales) { var ContentBlocker =3D function () { var m_idleStartTime =3D ns.GetCurrentTime(); var m_signRequest =3D []; var m_callFunction; var m_deactivateFunction; session.InitializePlugin(function (activatePlugin, = registerMethod, callFunction, deactivatePlugin) { m_deactivateFunction =3D deactivatePlugin; m_callFunction =3D callFunction; activatePlugin('cb', OnPing, OnError); registerMethod('cb.reloadUrl', ReloadUrl); registerMethod('cb.signReady', SignReady); registerMethod('cb.shutdown', function () { deactivatePlugin('cb'); } ); callFunction('cb.connect', [], function (result) { if (result !=3D 0) { deactivatePlugin('cb'); } }, function (e) { OnError(e); deactivatePlugin('cb'); }); }); function OnError(e) { session.Log('ERR CB - ' + (e.message || e)); } function OnPing(currentTime) { var idleTime =3D (currentTime >=3D m_idleStartTime) ? = currentTime - m_idleStartTime : 0; return idleTime <=3D 10000 ? 500 : ns.MaxRequestDelay; } function ReloadUrl() { session.Log("Start reload url " + document.readyState); m_idleStartTime =3D ns.GetCurrentTime(); window.location.reload(true); } function SignReady(args) { m_idleStartTime =3D ns.GetCurrentTime(); if (args.length !=3D=3D 2) { session.Log('ContentBlocker error: invalid parameter = count ' + args.length); return; } if (!m_signRequest[args[0]]) { session.Log('ContentBlocker error: invalid challenge'); return; } m_signRequest[args[0]](args[1]); } if (settings.isProductInfoRequired) { window.KasperskyLab =3D (function (object) { var thisProductId =3D locales["ProductName"] + " " + = locales["ProductVersion"]; var thisProduct =3D { 'productName': locales["ProductName"], 'productVersion': locales["ProductVersion"], 'productPPCSID': locales["ProductPPCSID"], 'features': { 'isSafeMoneyInstalled': = locales["IsSafeMoneyInstalled"], 'isSafeMoneyProtectionEnabled': = settings.isSafeMoneyProtectionEnabled } }; if (locales["DeviceId"]) thisProduct['deviceId'] =3D locales["DeviceId"]; object._products =3D object._products || {}; object._products[thisProductId] =3D thisProduct; object.getInstalledProducts =3D function () { var products =3D []; for (var productId in object._products) { products.push(object._products[productId]); } return products; }; object.initProductInfoProvider =3D function = (signedProductInfoProvider) { delete object.initProductInfoProvider; object._products2 =3D object._products2 || {}; object._products2[thisProductId] =3D = signedProductInfoProvider; object.getInstalledProducts2 =3D function = (challenge, timeoutMs, callback) { for (var productId in object._products2) { object._products2[productId](challenge, = timeoutMs, callback); } }; }; return object; })(window.KasperskyLab || {}); window.KasperskyLab.initProductInfoProvider(function = (challenge, timeoutMs, callback) { m_signRequest[challenge] =3D callback; m_callFunction('cb.signedProductInfo', [challenge, = timeoutMs], function (result) { if (result !=3D 0) { m_signRequest[challenge] =3D null; } }, function (e) { OnError(e); m_deactivateFunction('cb'); }); }); } }; try { new ContentBlocker(); if (window.dispatchEvent && typeof(window.CustomEvent) =3D=3D = "function") { window.dispatchEvent(new CustomEvent("cb.ready")); } } catch (e) { session.Log('ContentBlocker exception ' + (e.message || e)); } }); (function (ns) { ns.UrlAdvisorBalloon =3D function (locales, infoUrl, termsUrl) { var threatTypes =3D [ {name:'Unknown', bit:-1}, {name:locales["PhishingName"], bit:62}, {name:locales["MalwareName"], bit:63} ]; var ratingIds =3D [ {headerClass:'kl_header green', = headerNode:locales["UrlAdvisorBalloonHeaderGood"], textNode : = locales["UrlAdvisorSetLocalContentOnlineGood"], marker:'kl_marker = allow'}, {headerClass:'kl_header grey', = headerNode:locales["UrlAdvisorBalloonHeaderSuspicious"], = textNode:locales["UrlAdvisorSetLocalContentOnlineSuspicious"], = marker:'kl_marker unknown'}, {headerClass:'kl_header red', = headerNode:locales["UrlAdvisorBalloonHeaderDanger"], = textNode:locales["UrlAdvisorSetLocalContentOnlineDanger"], = marker:'kl_marker disallow'} ]; var m_termsLink =3D ''; var m_externalLink =3D ''; function GetImageSrc(imageName) { return ns.GetResourceSrc('/ua/' + imageName); } function AddStyles() { ns.AddStyles([ '.kisb * { position: relative; display:block; overflow-x:hidden; = width: auto; margin:0; padding:0; font-family: Verdana; line-height: = 150%; text-indent:0; border:0; box-sizing:content-box; color:#000000; = letter-spacing: normal; ' + locales["RtlStyle"] + '}', '.kisb { z-index:2147483647; width: 280px; cursor:default; = display:block;}', '.kisb .kl_header { padding:27px 26px 10px 26px; }', '.kisb .kl_header.red { background-image:url(' + = GetImageSrc('header_red.png') + ');}', '.kisb .kl_header.grey { background-image:url(' + = GetImageSrc('header_grey.png') + ');}', '.kisb .kl_header.green { background-image:url(' + = GetImageSrc('header_green.png') + ');}', '.kisb .kl_content { background: url(' + GetImageSrc('content.png') + = ') repeat-y top left; padding:10px 26px 10px 26px;}', '.kisb .kl_content .block { width: 228px!important; }', '.kisb .kl_marker { margin-top: 5px; margin-bottom:10px; = padding-top:2px; padding-left:25px; background-position-x: 0; = background-position-y: 0; background-repeat: no-repeat; word-wrap: = break-word;}', '.kisb .kl_marker.allow { background-image: url( ' + = GetImageSrc('allow.png') + ')}', '.kisb .kl_marker.disallow { background-image: url(' + = GetImageSrc('disallow.png') + ')}', '.kisb .kl_marker.unknown { background-image: url(' + = GetImageSrc('unknown.png') + ')}', '.kisb .kl_tag { display:inline-block; background: left top url(' + = GetImageSrc('tag.png') + ') no-repeat; padding-left:12px; = padding-right:5px; margin-right:5px; margin-bottom:5px; font-size: = 7.5pt;}', '.kisb .kl_external { margin-top: 15px; padding-top:2px; = padding-left:20px; background-position-x: left; background-position-y: = top; background-repeat: no-repeat;}', '.kisb .kl_external { background-image: url(' + = GetImageSrc('external.png') + ')}', '.kisb .kl_footer { background: url(' + GetImageSrc('footer.png') + = ') no-repeat bottom left; padding:6px 26px 22px 26px;}', '.kisb .kl_content * { font-size:8pt; }', '.kisb a { text-decoration: underline; display:inline-block; }', '.kisb a:hover { text-decoration: none; }', '.kisb a, .kisb a:link, .kisb a:hover, .kisb a:visited { color: = #008ccc;}', '.kisb .kl_header { font-size:12pt; color: #ffffff; }', '.kisb .kl_footer a { font-size:8pt; color: #4d4d4d; = text-decoration:underline; }' ]); } function FixBigInt(bigInt) { if (bigInt.low >=3D 10000000000) { var addedHigh =3D Math.floor(bigInt.low / 10000000000); bigInt.low =3D bigInt.low % 10000000000; bigInt.high +=3D addedHigh; } } function BigIntToString(bigInt) { var result =3D ''; if (bigInt.high) { result +=3D bigInt.high; for (var i =3D bigInt.low.toString().length; i < 10; ++i) result +=3D '0'; } result +=3D bigInt.low; return result; } function GetMask(bit) { if (bit < 0 || bit >=3D 64) return {high: 0, low: 0}; var mask =3D { high: 0, low: Math.pow(2, Math.min(50, bit)) }; FixBigInt(mask); if (bit > 50) { mask.low *=3D Math.pow(2, bit - 50); mask.high *=3D Math.pow(2, bit - 50); FixBigInt(mask); } return mask; } function GetCategoriesMask(threats, categories) { var mask =3D {high: 0, low: 0}; var bits =3D []; var i, count; if (threats) for (i =3D 0, count =3D threats.length; i < count; ++i) bits.push(threatTypes[threats[i]].bit); if (categories) for (i =3D 0, count =3D categories.length; i < count; ++i) bits.push(categories[i] - 1); for (i =3D 0, count =3D bits.length; i < count; ++i) { var addingMask =3D GetMask(bits[i]); mask.high +=3D addingMask.high; mask.low +=3D addingMask.low; FixBigInt(mask); } return BigIntToString(mask); } function ConvertThreat(threat) { return threatTypes[threat].name; } function ConvertCategory(category) { return locales["CAT_" + category]; } function AddTagsFromList(parentElement, list, converter) { if (!list) return; for (var i =3D 0, count =3D list.length; i < count; ++i) { var spanElement =3D document.createElement('span'); spanElement.className =3D 'kl_tag'; spanElement.appendChild(document.createTextNode(converter(list[i]))); parentElement.appendChild(spanElement); } } function AddVerdictTags(parentElement, verdict) { if ((!verdict.categories || verdict.categories.length =3D=3D 0) && = (!verdict.threats || verdict.threats.length =3D=3D 0)) return; parentElement.appendChild(document.createElement('br')); parentElement.appendChild(document.createElement('br')); = parentElement.appendChild(document.createTextNode(locales["UrlAdvisorDesc= ribeCategories"] + ": ")); var divElement =3D = parentElement.appendChild(document.createElement('div')); AddTagsFromList(divElement, verdict.categories, ConvertCategory); AddTagsFromList(divElement, verdict.threats, ConvertThreat); } function RemoveAllChilds(element) { while (element.childNodes.length > 0) element.removeChild(element.childNodes[0]); } function UpdateBalloon(verdict) { var headerElement =3D document.getElementById('balloon_header'); var contentElement =3D document.getElementById('balloon_content'); var markerElement =3D document.getElementById('balloon_marker'); var tagElement =3D document.getElementById('balloon_tags'); RemoveAllChilds(headerElement); RemoveAllChilds(contentElement); RemoveAllChilds(markerElement); RemoveAllChilds(tagElement); headerElement.className =3D ratingIds[verdict.rating-1].headerClass; = headerElement.appendChild(document.createTextNode(ratingIds[verdict.ratin= g-1].headerNode)); contentElement .appendChild(document.createElement('b')) = .appendChild(document.createTextNode(ratingIds[verdict.rating-1].textNode= )); markerElement.className =3D ratingIds[verdict.rating-1].marker; markerElement.appendChild(document.createTextNode(verdict.url)); AddVerdictTags(tagElement, verdict); var additionalInfoLink =3D locales["UrlAdvisorAdditionalInfoLinkMask"] = || infoUrl; if (additionalInfoLink.indexOf("&rpe") =3D=3D=3D -1) { additionalInfoLink +=3D = "&act-exturl=3D%VerdictUrl%&act-threat-cat=3D%VerdictRating%&act-content-= cat=3D%ContentCategory%&rpe=3D1"; } additionalInfoLink =3D additionalInfoLink.replace("%VerdictUrl%", = encodeURIComponent(verdict.url)); additionalInfoLink =3D additionalInfoLink.replace("%VerdictRating%", = verdict.rating - 1); additionalInfoLink =3D additionalInfoLink.replace("%ContentCategory%", = GetCategoriesMask(verdict.threats, verdict.categories)); m_externalLink =3D additionalInfoLink; m_termsLink =3D locales["UrlAdvisorTermLink"] || termsUrl; } function CheckMouseOverBalloon(mouseArgs) { if (m_balloon) { var args =3D mouseArgs || window.event; var rect =3D m_balloon.getBoundingClientRect(); if (args.clientX > rect.left && args.clientX < rect.right && args.clientY > rect.top && args.clientY < rect.bottom) { return; } HideBalloon(); } } function CreateHeaderDiv(balloonDiv) { var headerDiv =3D document.createElement('div'); headerDiv.id =3D 'balloon_header'; balloonDiv.appendChild(headerDiv); } function OnExternalLinkClick(evt) { try { ns.StopProcessingEvent(evt); ns.WindowOpen(m_externalLink); } catch (e) { session.Log("OnExternalLinkClick error: " + (e.message || e)); } } function CreateContentDiv(balloonDiv) { var contentDiv =3D document.createElement('div'); contentDiv.className =3D 'kl_content'; var blockDiv =3D document.createElement('div'); blockDiv.className =3D 'block'; contentDiv.appendChild(blockDiv); var contentTypeDiv =3D document.createElement('div'); contentTypeDiv.className =3D 'block'; contentTypeDiv.id =3D 'balloon_content'; blockDiv.appendChild(contentTypeDiv); var markerDiv =3D document.createElement('div'); markerDiv.className =3D 'kl_marker allow'; markerDiv.id =3D 'balloon_marker'; blockDiv.appendChild(markerDiv); var tagsDiv =3D document.createElement('div'); tagsDiv.id =3D 'balloon_tags'; blockDiv.appendChild(tagsDiv); var infoLink =3D document.createElement('a'); infoLink.href =3D '#'; infoLink.id =3D 'balloon_external'; infoLink.className =3D 'kl_external'; infoLink.target =3D '_blank'; = infoLink.appendChild(document.createTextNode(locales["UrlAdvisorSetLocalC= ontentGotoForInfo"])); ns.AddEventListener(infoLink, "click", OnExternalLinkClick); blockDiv.appendChild(infoLink); balloonDiv.appendChild(contentDiv); } function OnTermsLinkClick(evt) { try { ns.StopProcessingEvent(evt); ns.WindowOpen(m_termsLink); } catch (e) { session.Log("OnTermsLinkClick error: " + (e.message || e)); } } function CreateFooterDiv(balloonDiv) { var footerDiv =3D document.createElement('div'); footerDiv.className =3D 'kl_footer'; footerDiv.id =3D 'balloon_footer'; var termsLink =3D document.createElement('a'); termsLink.id =3D 'balloon_terms'; termsLink.target =3D '_blank'; = termsLink.appendChild(document.createTextNode(locales["UrlAdvisorSetLocal= ContentTermsOfUsage"])); termsLink.href =3D '#'; =09 ns.AddEventListener(termsLink, "click", OnTermsLinkClick); footerDiv.appendChild(termsLink); balloonDiv.appendChild(footerDiv); } function CreateBalloon() { AddStyles(); var balloonDiv =3D document.createElement('div'); balloonDiv.className =3D 'kisb'; balloonDiv.id =3D 'balloon_parent_div'; balloonDiv.onmouseout =3D CheckMouseOverBalloon; CreateHeaderDiv(balloonDiv); CreateContentDiv(balloonDiv); CreateFooterDiv(balloonDiv); balloonDiv.style.visibility =3D 'hidden'; document.body.appendChild(balloonDiv); return balloonDiv; } var m_balloon =3D null; function GetElementSize(element) { var rect =3D element.getBoundingClientRect(); var width =3D rect.width ? rect.width : rect.right - rect.left; var height =3D rect.height ? rect.height : rect.bottom - rect.top; return {width: width, height: height}; } this.ShowBalloon =3D function(clientX, clientY, verdict) { m_balloon =3D document.getElementById('balloon_parent_div'); if (!m_balloon) m_balloon =3D CreateBalloon(); UpdateBalloon(verdict); var clientWidth =3D ns.GetPageWidth(); var balloonSize =3D GetElementSize(m_balloon); var halfWidth =3D balloonSize.width / 2; var x; if (halfWidth > clientX) x =3D 0; else if (halfWidth + clientX > clientWidth) x =3D clientWidth - balloonSize.width; else x =3D clientX - halfWidth; var clientHeight =3D ns.GetPageHeight(); var y =3D (clientY + balloonSize.height > clientHeight) ? clientY - = balloonSize.height : clientY; if (y < 0) y =3D 0; var scroll =3D ns.GetPageScroll(); y +=3D scroll.top; x +=3D scroll.left; m_balloon.style.position =3D 'absolute'; m_balloon.style.top =3D Math.round(y).toString() + 'px'; m_balloon.style.left =3D Math.round(x).toString() + 'px'; m_balloon.style.visibility =3D 'visible'; } function HideBalloon() { if (m_balloon) m_balloon.style.visibility =3D 'hidden'; } }; }) (KasperskyLab || {}); var CheckedAtributeName =3D 'kl_' + KasperskyLab.GetCurrentTime(); var IconName =3D 'kl_' + KasperskyLab.GetCurrentTime(); KasperskyLab.AddRunner("ua", function (ns, session, settings, locales) { var UrlAdvisor =3D function() { var m_urlAdvisorBalloon =3D new ns.UrlAdvisorBalloon(locales, = settings.infoUrl, settings.termsUrl);=09 var m_settingsEnabled =3D settings.enable; var m_enabled =3D m_settingsEnabled && (settings.state =3D=3D=3D = 'Enabled'); var m_checkOnlySearchResults =3D settings.mode; var m_postponeCategorizeStarted =3D false; var m_urlCategorizeRequestTime =3D 0; var m_observer; var m_state =3D settings.state, m_callFunction; session.InitializePlugin(function(activatePlugin, registerMethod, = callFunction){ m_callFunction =3D callFunction; activatePlugin('ua', OnPing, OnError); registerMethod('ua.verdict', SetVerdict); registerMethod('ua.settings', SetSettings); registerMethod('ua.state', SetState); }); Run(); function OnPing(currentTime) { var timeFormRequest =3D (currentTime >=3D m_urlCategorizeRequestTime) = ? currentTime - m_urlCategorizeRequestTime : 0; return timeFormRequest <=3D 10000 ? 500 : ns.MaxRequestDelay; } function OnError(e) { session.Log('ERR UA - ' + (e.message || e)); } function GetHref(link) { try { return link.href; } catch(e){} try { return link.getAttribute('href'); } catch(e){} return ''; } function IsLinkHighlighted(linkElement) { var nextElement =3D linkElement.nextSibling; return nextElement !=3D=3D null && nextElement.name =3D=3D IconName; } function GetLinkIcon(linkElement) { if (!IsLinkHighlighted(linkElement)) { var icon =3D document.createElement('img'); icon.name =3D IconName; icon.width =3D 12; icon.height =3D 12; icon.style.cssText=3D"width:12px;height:12px"; linkElement.parentNode.insertBefore(icon, linkElement.nextSibling); } return linkElement.nextSibling; } function UpdateIconImage(icon, verdict) { if (verdict.rating =3D=3D=3D 1) { icon.src =3D ns.GetResourceSrc('/ua/UrlAdvisorGoodImage.png'); icon['kis_status'] =3D 16; } else if (verdict.rating =3D=3D=3D 2) { icon.src =3D ns.GetResourceSrc('/ua/UrlAdvisorSuspiciousImage.png'); icon['kis_status'] =3D 8; } else if (verdict.rating =3D=3D=3D 3) { icon.src =3D ns.GetResourceSrc('/ua/UrlAdvisorDangerImage.png'); icon['kis_status'] =3D 4; } } function SubscribeIconOnMouseEvents(icon, verdict) { var balloonTimerId =3D 0; icon.onmouseout =3D function() { if (balloonTimerId) { window.clearTimeout(balloonTimerId); balloonTimerId =3D 0; } }; icon.onmouseover =3D function(mouseArgs) { if (!balloonTimerId) { var args =3D mouseArgs || window.event; balloonTimerId =3D window.setTimeout(function(clientX, clientY) { return function() { m_urlAdvisorBalloon.ShowBalloon(clientX, clientY, verdict); } }(args.clientX, args.clientY), 300); } }; } function SetVerdict(argumentsList) { for (var currentVerdict =3D 0; currentVerdict < argumentsList.length; = currentVerdict++) { var verdict =3D ns.JSONParse(argumentsList[currentVerdict]); for (var currentLinkIndex =3D 0; currentLinkIndex < = document.links.length; currentLinkIndex++) { var linkElement =3D document.links[currentLinkIndex]; if (verdict.url =3D=3D=3D GetHref(linkElement) && = (!m_checkOnlySearchResults || ns.IsLinkSearchResult(linkElement))) { var icon =3D GetLinkIcon(linkElement); if (!!icon) { UpdateIconImage(icon, verdict); SubscribeIconOnMouseEvents(icon, verdict); } } } } } function SetSettingsImpl(argumentList) { if (argumentList.length > 0) { m_settingsEnabled =3D (argumentList[0] !=3D '0'); m_enabled =3D m_settingsEnabled && (m_state =3D=3D 'Enabled'); } if (!m_enabled) return; m_checkOnlySearchResults =3D !!(argumentList.length > 1 && = argumentList[1] =3D=3D 1); } function ClearImages() { var images =3D document.getElementsByName(IconName); while (images.length > 0) images[0].parentNode.removeChild(images[0]); } function ClearAttributes() { for (var i =3D 0; i < document.links.length; ++i) if (document.links[i][CheckedAtributeName]) document.links[i][CheckedAtributeName] =3D false; } function SetSettings(argumentList) { ClearImages(); ClearAttributes(); SetSettingsImpl(argumentList); CategorizeUrl(); } function SetState(argumentList) { if (argumentList.length > 0) { ClearImages(); ClearAttributes(); m_state =3D argumentList[0]; m_enabled =3D m_settingsEnabled && (m_state =3D=3D 'Enabled'); CategorizeUrl(); } } function IsNeedCategorizeLink(linkElement) { try { return !linkElement.isContentEditable && !!linkElement.parentNode && = !IsLinkHighlighted(linkElement) && !linkElement[CheckedAtributeName] && (!m_checkOnlySearchResults || ns.IsLinkSearchResult(linkElement)) && linkElement.id !=3D=3D 'balloon_external' && linkElement.id !=3D=3D 'balloon_terms'; } catch(e) { session.Log('check link exception: ' + (e.message || e)); return false; } } function ProcessDomChange() { try { if (!m_postponeCategorizeStarted) { setTimeout(CategorizeUrl, 500); m_postponeCategorizeStarted =3D true; } var images =3D document.getElementsByName(IconName); for (var i =3D 0; i < images.length; ++i) { var linkNode =3D images[i].previousSibling; if (!linkNode || !linkNode.nodeName || = linkNode.nodeName.toLowerCase() !=3D=3D "a") { var imageNode =3D images[i]; imageNode.parentNode.removeChild(imageNode); } } } catch (e) { session.Log("ua dom change handling exception: " + (e.message || e)); } } function CategorizeUrl() { try { if (!m_enabled) { session.Log("skip categorize links because UA disabled"); return; } m_postponeCategorizeStarted =3D false; var linksForCategorize =3D []; for (var i =3D 0; i < document.links.length; i++) { var link =3D document.links[i]; if (IsNeedCategorizeLink(link)) { link[CheckedAtributeName] =3D true;=20 var href =3D GetHref(link); if (!!href) { linksForCategorize.push(href);=20 } else { ns.Log("access to href blocked by browser");=20 } } } if (linksForCategorize.length) { m_callFunction("ua.categorize", linksForCategorize, null, OnError); m_urlCategorizeRequestTime =3D ns.GetCurrentTime(); } else { session.Log("UA not found links for categorization"); } } catch (e) { session.Log("ua categorize exception: " + (e.message || e)); } } function Run() { CategorizeUrl(); m_observer =3D ns.GetDomChangeObserver("a"); m_observer.Start(ProcessDomChange); ns.AddEventListener(window, "unload",=20 function() { if (m_observer) m_observer.Stop(); }); }; }; var instance =3D null; function RunUrlAdvisor() { try { if (!instance) { instance =3D new UrlAdvisor(); } } catch(e) { session.Log('UrlAdvisor exception ' + (e.message || e)); } } if (document.readyState =3D=3D=3D "loading") { if (document.addEventListener) { document.addEventListener("DOMContentLoaded", RunUrlAdvisor, true); } else if (document.all) { document.attachEvent("onreadystatechange", function() { if (document.readyState !=3D=3D "loading") RunUrlAdvisor(); }); } } else { RunUrlAdvisor(); } }); =0A= })();=0A= =0A= })();=0A= ------=_NextPart_000_0015_01D32D51.873B55D0--