1 $ˆl–Ãa¾”jhŠ€zà¸Ûêbѿ „dL¾/ÁÀ¿?÷a U Y^èã@snddlZddlZddlZddlZddlZz ddlZWneyRddlmZYn0z ddl Z Wneyzddl Z Yn0ddl Z ddl m Z mZmZmZmZmZejejejejdœZdZdZdZdZdZd Zd Zd Zd Z d Z!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5d Z6d!Z7d"Z8d#Z9d$Z:d%Z;d&Zd)Z?d*Z@d+ZAd,ZBd-ZCd.ZDe-e9e.e:e/e;e0ee3e?e4e@e5eAe6eBe7eCe8eDi ZEdZFdZGdZHdZIdZJdZKdZLdZMdZNdZOd ZPd!ZQd"ZRd/ZSd0ZTd1ZUd2ZVd3ZWd4ZXd5ZYd6ZZd7Z[d8Z\d9Z]d:Z^d;Z_de jpd;e jqd?iZresd@dA„er t¡DƒƒZue jvd=e jwd>e jxdÖórNccs|]\}}||fVqdSrGrHrIrHrHrMrNÝrOÚ REQUESTEDÚACTIVEÚINACTIVEÚREALLY_INACTIVEc@s*eZdZdZd dd„Zdd„Zdd„ZdS) Ú TelnetOptionz@Manage a single telnet option, keeps track of DO/DONT WILL/WONT.Nc Cs@||_||_||_||_||_||_||_||_d|_| |_ dS)a; Initialize option. :param connection: connection used to transmit answers :param name: a readable name for debug outputs :param send_yes: what to send when option is to be enabled. :param send_no: what to send when option is to be disabled. :param ack_yes: what to expect when remote agrees on option. :param ack_no: what to expect when remote disagrees on option. :param initial_state: options initialized with REQUESTED are tried to be enabled on startup. use INACTIVE for all others. FN) Ú connectionÚnameÚoptionÚsend_yesÚsend_noÚack_yesÚack_noÚstateÚactiveÚactivation_callback) ÚselfrUrVrWrXrYrZr[Z initial_stater^rHrHrMÚ__init__îs zTelnetOption.__init__cCs dj|d�S)zString for debug outputsz{o.name}:{o.active}({o.state}))Úo©Úformat©r_rHrHrMÚ__repr__szTelnetOption.__repr__cCs&||jkrª|jtur4t|_d|_|jdur¨| ¡nt|jtur@nh|jtur|t|_|j |j |j ¡d|_|jdur¨| ¡n,|jt urš|j |j |j ¡nt d |¡ƒ‚nx||jk�r"|jturÎt|_d|_nT|jturøt|_|j |j |j ¡d|_n*|jtu�rn|jt u�rnt d |¡ƒ‚dS)zo A DO/DONT/WILL/WONT was received for this option, update state and answer when needed. TNzoption in illegal state {!r}F)rZr\rPrQr]r^rRrUÚtelnet_send_optionrXrWrSrYÚ ValueErrorrcr[©r_ÚcommandrHrHrMÚprocess_incoming s<              zTelnetOption.process_incoming)N)Ú__name__Ú __module__Ú __qualname__Ú__doc__r`rerjrHrHrHrMrTës ÿ rTc@sLeZdZdZddd„Zdd„Zdd„Zd d „ZeeƒZ dd d „Z dd„Z dS)ÚTelnetSubnegotiationz” A object to handle subnegotiation of options. In this case actually sub-sub options for RFC 2217. It is used t